pike.git / src / operators.c

version» Context lines:

pike.git/src/operators.c:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: operators.c,v 1.248 2009/06/30 21:39:51 mast Exp $ + || $Id: operators.c,v 1.249 2009/07/12 11:48:23 grubba Exp $   */      #include "global.h"   #include <math.h>   #include "interpret.h"   #include "svalue.h"   #include "multiset.h"   #include "mapping.h"   #include "array.h"   #include "stralloc.h"
pike.git/src/operators.c:474:    }    return;       default:    Pike_error("Cannot cast %s to string.\n", get_name_of_type(sp[-1].type));       case PIKE_T_STRING:    return;       case T_FLOAT: +  if (sp[-1].u.float_number < 0) { +  /* Some libc's have bugs in the handling of large negative floats... */ +  sprintf(buf,"-%.*"PRINTPIKEFLOAT"g", +  MAX_FLOAT_PREC_LEN, -sp[-1].u.float_number); +  } else {    sprintf(buf,"%.*"PRINTPIKEFLOAT"g",    MAX_FLOAT_PREC_LEN, sp[-1].u.float_number); -  +  }    /* Ensure that either an exponent or a decimal point gets printed,    * since %g can remove both which would make it look like an integer. */    if (!strchr (buf, '.') && !strchr (buf, 'e'))    strcat (buf, ".0");    break;       case T_INT:    sprintf(buf, "%"PRINTPIKEINT"d", sp[-1].u.integer);    break;    }