e8a9a9b
diff -up kdelibs-3.5.10/kjs/dtoa.cpp.orig kdelibs-3.5.10/kjs/dtoa.cpp
e8a9a9b
--- kdelibs-3.5.10/kjs/dtoa.cpp.orig	2009-12-09 18:32:22.000000000 +0100
e8a9a9b
+++ kdelibs-3.5.10/kjs/dtoa.cpp	2009-12-09 18:32:36.000000000 +0100
e8a9a9b
@@ -174,9 +174,10 @@
e8a9a9b
 #undef CONST
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
+#include "dtoa.h"
e8a9a9b
 #include <config.h>
e8a9a9b
 
e8a9a9b
-#include "stdlib.h"
e8a9a9b
+#include "global.h"
e8a9a9b
 
e8a9a9b
 #ifdef WORDS_BIGENDIAN
e8a9a9b
 #define IEEE_MC68k
e8a9a9b
@@ -184,7 +185,6 @@
e8a9a9b
 #define IEEE_8087
e8a9a9b
 #endif
e8a9a9b
 #define INFNAN_CHECK
e8a9a9b
-#include "dtoa.h"
e8a9a9b
 
e8a9a9b
 
e8a9a9b
 
e8a9a9b
@@ -196,22 +196,19 @@ typedef unsigned Long ULong;
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
 #ifdef DEBUG
e8a9a9b
-#include "stdio.h"
e8a9a9b
+#include <stdio.h>
e8a9a9b
 #define Bug(x) {fprintf(stderr, "%s\n", x); exit(1);}
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
-#include "string.h"
e8a9a9b
+#include <stdlib.h>
e8a9a9b
+#include <string.h>
e8a9a9b
 
e8a9a9b
 #ifdef USE_LOCALE
e8a9a9b
-#include "locale.h"
e8a9a9b
+#include <locale.h>
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
 #ifdef MALLOC
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-extern char *MALLOC();
e8a9a9b
-#else
e8a9a9b
 extern void *MALLOC(size_t);
e8a9a9b
-#endif
e8a9a9b
 #else
e8a9a9b
 #define MALLOC malloc
e8a9a9b
 #endif
e8a9a9b
@@ -233,7 +230,7 @@ static double private_mem[PRIVATE_mem], 
e8a9a9b
 #define IEEE_Arith
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
-#include "errno.h"
e8a9a9b
+#include <errno.h>
e8a9a9b
 
e8a9a9b
 #ifdef Bad_float_h
e8a9a9b
 
e8a9a9b
@@ -260,25 +257,29 @@ static double private_mem[PRIVATE_mem], 
e8a9a9b
 #define DBL_MAX 1.7014118346046923e+38
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
+#ifndef LONG_MAX
e8a9a9b
+#define LONG_MAX 2147483647
e8a9a9b
+#endif
e8a9a9b
+
e8a9a9b
 #else /* ifndef Bad_float_h */
e8a9a9b
-#include "float.h"
e8a9a9b
+#include <float.h>
e8a9a9b
 #endif /* Bad_float_h */
e8a9a9b
 
e8a9a9b
 #ifndef __MATH_H__
e8a9a9b
-#include "math.h"
e8a9a9b
+#include <math.h>
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
+#define strtod kjs_strtod
e8a9a9b
+#define dtoa kjs_dtoa
e8a9a9b
+#define freedtoa kjs_freedtoa
e8a9a9b
+
e8a9a9b
 #ifdef __cplusplus
e8a9a9b
 extern "C" {
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
 #ifndef CONST
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-#define CONST /* blank */
e8a9a9b
-#else
e8a9a9b
 #define CONST const
e8a9a9b
 #endif
e8a9a9b
-#endif
e8a9a9b
 
e8a9a9b
 #if defined(IEEE_8087) + defined(IEEE_MC68k) + defined(VAX) + defined(IBM) != 1
e8a9a9b
 Exactly one of IEEE_8087, IEEE_MC68k, VAX, or IBM should be defined.
e8a9a9b
@@ -286,37 +287,19 @@ Exactly one of IEEE_8087, IEEE_MC68k, VA
e8a9a9b
 
e8a9a9b
 typedef union { double d; ULong L[2]; } U;
e8a9a9b
 
e8a9a9b
-#ifdef YES_ALIAS
e8a9a9b
-#define dval(x) x
e8a9a9b
+#define dval(x) (x).d
e8a9a9b
 #ifdef IEEE_8087
e8a9a9b
-#define word0(x) ((ULong *)&x)[1]
e8a9a9b
-#define word1(x) ((ULong *)&x)[0]
e8a9a9b
+#define word0(x) (x).L[1]
e8a9a9b
+#define word1(x) (x).L[0]
e8a9a9b
 #else
e8a9a9b
-#define word0(x) ((ULong *)&x)[0]
e8a9a9b
-#define word1(x) ((ULong *)&x)[1]
e8a9a9b
-#endif
e8a9a9b
-#else
e8a9a9b
-#ifdef IEEE_8087
e8a9a9b
-#define word0(x) ((U*)&x)->L[1]
e8a9a9b
-#define word1(x) ((U*)&x)->L[0]
e8a9a9b
-#else
e8a9a9b
-#define word0(x) ((U*)&x)->L[0]
e8a9a9b
-#define word1(x) ((U*)&x)->L[1]
e8a9a9b
-#endif
e8a9a9b
-#define dval(x) ((U*)&x)->d
e8a9a9b
+#define word0(x) (x).L[0]
e8a9a9b
+#define word1(x) (x).L[1]
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
 /* The following definition of Storeinc is appropriate for MIPS processors.
e8a9a9b
  * An alternative that might be better on some machines is
e8a9a9b
- * #define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff)
e8a9a9b
  */
e8a9a9b
-#if defined(IEEE_8087) + defined(VAX)
e8a9a9b
-#define Storeinc(a,b,c) (((unsigned short *)a)[1] = (unsigned short)b, \
e8a9a9b
-((unsigned short *)a)[0] = (unsigned short)c, a++)
e8a9a9b
-#else
e8a9a9b
-#define Storeinc(a,b,c) (((unsigned short *)a)[0] = (unsigned short)b, \
e8a9a9b
-((unsigned short *)a)[1] = (unsigned short)c, a++)
e8a9a9b
-#endif
e8a9a9b
+#define Storeinc(a,b,c) (*a++ = b << 16 | c & 0xffff)
e8a9a9b
 
e8a9a9b
 /* #define P DBL_MANT_DIG */
e8a9a9b
 /* Ten_pmax = floor(P*log(2)/log(5)) */
e8a9a9b
@@ -440,11 +423,7 @@ typedef union { double d; ULong L[2]; } 
e8a9a9b
 #ifdef RND_PRODQUOT
e8a9a9b
 #define rounded_product(a,b) a = rnd_prod(a, b)
e8a9a9b
 #define rounded_quotient(a,b) a = rnd_quot(a, b)
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-extern double rnd_prod(), rnd_quot();
e8a9a9b
-#else
e8a9a9b
 extern double rnd_prod(double, double), rnd_quot(double, double);
e8a9a9b
-#endif
e8a9a9b
 #else
e8a9a9b
 #define rounded_product(a,b) a *= b
e8a9a9b
 #define rounded_quotient(a,b) a /= b
e8a9a9b
@@ -457,11 +436,7 @@ extern double rnd_prod(double, double), 
e8a9a9b
 #define Pack_32
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-#define FFFFFFFF ((((unsigned long)0xffff)<<16)|(unsigned long)0xffff)
e8a9a9b
-#else
e8a9a9b
 #define FFFFFFFF 0xffffffffUL
e8a9a9b
-#endif
e8a9a9b
 
e8a9a9b
 #ifdef NO_LONG_LONG
e8a9a9b
 #undef ULLong
e8a9a9b
@@ -487,7 +462,7 @@ extern double rnd_prod(double, double), 
e8a9a9b
 #define FREE_DTOA_LOCK(n)	/*nothing*/
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
-#define Kmax 15
e8a9a9b
+#define Kmax (sizeof(size_t) << 3)
e8a9a9b
 
e8a9a9b
  struct
e8a9a9b
 Bigint {
e8a9a9b
@@ -502,11 +477,7 @@ Bigint {
e8a9a9b
 
e8a9a9b
  static Bigint *
e8a9a9b
 Balloc
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(k) int k;
e8a9a9b
-#else
e8a9a9b
 	(int k)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	int x;
e8a9a9b
 	Bigint *rv;
e8a9a9b
@@ -525,7 +496,7 @@ Balloc
e8a9a9b
 #else
e8a9a9b
 		len = (sizeof(Bigint) + (x-1)*sizeof(ULong) + sizeof(double) - 1)
e8a9a9b
 			/sizeof(double);
e8a9a9b
-		if (pmem_next - private_mem + len <= PRIVATE_mem) {
e8a9a9b
+		if (pmem_next - private_mem + len <= (unsigned)PRIVATE_mem) {
e8a9a9b
 			rv = (Bigint*)pmem_next;
e8a9a9b
 			pmem_next += len;
e8a9a9b
 			}
e8a9a9b
@@ -542,11 +513,7 @@ Balloc
e8a9a9b
 
e8a9a9b
  static void
e8a9a9b
 Bfree
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(v) Bigint *v;
e8a9a9b
-#else
e8a9a9b
 	(Bigint *v)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	if (v) {
e8a9a9b
 		ACQUIRE_DTOA_LOCK(0);
e8a9a9b
@@ -561,11 +528,7 @@ y->wds*sizeof(Long) + 2*sizeof(int))
e8a9a9b
 
e8a9a9b
  static Bigint *
e8a9a9b
 multadd
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(b, m, a) Bigint *b; int m, a;
e8a9a9b
-#else
e8a9a9b
 	(Bigint *b, int m, int a)	/* multiply by m and add a */
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	int i, wds;
e8a9a9b
 #ifdef ULLong
e8a9a9b
@@ -587,7 +550,7 @@ multadd
e8a9a9b
 #ifdef ULLong
e8a9a9b
 		y = *x * (ULLong)m + carry;
e8a9a9b
 		carry = y >> 32;
e8a9a9b
-		*x++ = y & FFFFFFFF;
e8a9a9b
+		*x++ = (ULong)y & FFFFFFFF;
e8a9a9b
 #else
e8a9a9b
 #ifdef Pack_32
e8a9a9b
 		xi = *x;
e8a9a9b
@@ -610,7 +573,7 @@ multadd
e8a9a9b
 			Bfree(b);
e8a9a9b
 			b = b1;
e8a9a9b
 			}
e8a9a9b
-		b->x[wds++] = carry;
e8a9a9b
+		b->x[wds++] = (ULong)carry;
e8a9a9b
 		b->wds = wds;
e8a9a9b
 		}
e8a9a9b
 	return b;
e8a9a9b
@@ -618,11 +581,7 @@ multadd
e8a9a9b
 
e8a9a9b
  static Bigint *
e8a9a9b
 s2b
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(s, nd0, nd, y9) CONST char *s; int nd0, nd; ULong y9;
e8a9a9b
-#else
e8a9a9b
 	(CONST char *s, int nd0, int nd, ULong y9)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	Bigint *b;
e8a9a9b
 	int i, k;
e8a9a9b
@@ -656,11 +615,7 @@ s2b
e8a9a9b
 
e8a9a9b
  static int
e8a9a9b
 hi0bits
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(x) register ULong x;
e8a9a9b
-#else
e8a9a9b
 	(register ULong x)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	register int k = 0;
e8a9a9b
 
e8a9a9b
@@ -690,11 +645,7 @@ hi0bits
e8a9a9b
 
e8a9a9b
  static int
e8a9a9b
 lo0bits
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(y) ULong *y;
e8a9a9b
-#else
e8a9a9b
 	(ULong *y)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	register int k;
e8a9a9b
 	register ULong x = *y;
e8a9a9b
@@ -738,11 +689,7 @@ lo0bits
e8a9a9b
 
e8a9a9b
  static Bigint *
e8a9a9b
 i2b
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(i) int i;
e8a9a9b
-#else
e8a9a9b
 	(int i)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	Bigint *b;
e8a9a9b
 
e8a9a9b
@@ -754,11 +701,7 @@ i2b
e8a9a9b
 
e8a9a9b
  static Bigint *
e8a9a9b
 mult
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(a, b) Bigint *a, *b;
e8a9a9b
-#else
e8a9a9b
 	(Bigint *a, Bigint *b)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	Bigint *c;
e8a9a9b
 	int k, wa, wb, wc;
e8a9a9b
@@ -801,10 +744,10 @@ mult
e8a9a9b
 			do {
e8a9a9b
 				z = *x++ * (ULLong)y + *xc + carry;
e8a9a9b
 				carry = z >> 32;
e8a9a9b
-				*xc++ = z & FFFFFFFF;
e8a9a9b
+				*xc++ = (ULong)z & FFFFFFFF;
e8a9a9b
 				}
e8a9a9b
 				while(x < xae);
e8a9a9b
-			*xc = carry;
e8a9a9b
+			*xc = (ULong)carry;
e8a9a9b
 			}
e8a9a9b
 		}
e8a9a9b
 #else
e8a9a9b
@@ -866,11 +809,7 @@ mult
e8a9a9b
 
e8a9a9b
  static Bigint *
e8a9a9b
 pow5mult
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(b, k) Bigint *b; int k;
e8a9a9b
-#else
e8a9a9b
 	(Bigint *b, int k)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	Bigint *b1, *p5, *p51;
e8a9a9b
 	int i;
e8a9a9b
@@ -923,11 +862,7 @@ pow5mult
e8a9a9b
 
e8a9a9b
  static Bigint *
e8a9a9b
 lshift
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(b, k) Bigint *b; int k;
e8a9a9b
-#else
e8a9a9b
 	(Bigint *b, int k)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	int i, k1, n, n1;
e8a9a9b
 	Bigint *b1;
e8a9a9b
@@ -983,11 +918,7 @@ lshift
e8a9a9b
 
e8a9a9b
  static int
e8a9a9b
 cmp
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(a, b) Bigint *a, *b;
e8a9a9b
-#else
e8a9a9b
 	(Bigint *a, Bigint *b)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	ULong *xa, *xa0, *xb, *xb0;
e8a9a9b
 	int i, j;
e8a9a9b
@@ -1017,11 +948,7 @@ cmp
e8a9a9b
 
e8a9a9b
  static Bigint *
e8a9a9b
 diff
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(a, b) Bigint *a, *b;
e8a9a9b
-#else
e8a9a9b
 	(Bigint *a, Bigint *b)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	Bigint *c;
e8a9a9b
 	int i, wa, wb;
e8a9a9b
@@ -1064,13 +991,13 @@ diff
e8a9a9b
 	do {
e8a9a9b
 		y = (ULLong)*xa++ - *xb++ - borrow;
e8a9a9b
 		borrow = y >> 32 & (ULong)1;
e8a9a9b
-		*xc++ = y & FFFFFFFF;
e8a9a9b
+		*xc++ = (ULong)y & FFFFFFFF;
e8a9a9b
 		}
e8a9a9b
 		while(xb < xbe);
e8a9a9b
 	while(xa < xae) {
e8a9a9b
 		y = *xa++ - borrow;
e8a9a9b
 		borrow = y >> 32 & (ULong)1;
e8a9a9b
-		*xc++ = y & FFFFFFFF;
e8a9a9b
+		*xc++ = (ULong)y & FFFFFFFF;
e8a9a9b
 		}
e8a9a9b
 #else
e8a9a9b
 #ifdef Pack_32
e8a9a9b
@@ -1111,15 +1038,12 @@ diff
e8a9a9b
 
e8a9a9b
  static double
e8a9a9b
 ulp
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(x) double x;
e8a9a9b
-#else
e8a9a9b
-	(double x)
e8a9a9b
-#endif
e8a9a9b
+	(double dx)
e8a9a9b
 {
e8a9a9b
 	register Long L;
e8a9a9b
-	double a;
e8a9a9b
+	U x, a;
e8a9a9b
 
e8a9a9b
+	dval(x) = dx;
e8a9a9b
 	L = (word0(x) & Exp_mask) - (P-1)*Exp_msk1;
e8a9a9b
 #ifndef Avoid_Underflow
e8a9a9b
 #ifndef Sudden_Underflow
e8a9a9b
@@ -1153,15 +1077,11 @@ ulp
e8a9a9b
 
e8a9a9b
  static double
e8a9a9b
 b2d
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(a, e) Bigint *a; int *e;
e8a9a9b
-#else
e8a9a9b
 	(Bigint *a, int *e)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	ULong *xa, *xa0, w, y, z;
e8a9a9b
 	int k;
e8a9a9b
-	double d;
e8a9a9b
+	U d;
e8a9a9b
 #ifdef VAX
e8a9a9b
 	ULong d0, d1;
e8a9a9b
 #else
e8a9a9b
@@ -1223,12 +1143,9 @@ b2d
e8a9a9b
 
e8a9a9b
  static Bigint *
e8a9a9b
 d2b
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(d, e, bits) double d; int *e, *bits;
e8a9a9b
-#else
e8a9a9b
-	(double d, int *e, int *bits)
e8a9a9b
-#endif
e8a9a9b
+	(double dd, int *e, int *bits)
e8a9a9b
 {
e8a9a9b
+	U d;
e8a9a9b
 	Bigint *b;
e8a9a9b
 	int de, k;
e8a9a9b
 	ULong *x, y, z;
e8a9a9b
@@ -1237,6 +1154,9 @@ d2b
e8a9a9b
 #endif
e8a9a9b
 #ifdef VAX
e8a9a9b
 	ULong d0, d1;
e8a9a9b
+#endif
e8a9a9b
+	dval(d) = dd;
e8a9a9b
+#ifdef VAX
e8a9a9b
 	d0 = word0(d) >> 16 | word0(d) << 16;
e8a9a9b
 	d1 = word1(d) >> 16 | word1(d) << 16;
e8a9a9b
 #else
e8a9a9b
@@ -1361,13 +1281,9 @@ d2b
e8a9a9b
 
e8a9a9b
  static double
e8a9a9b
 ratio
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(a, b) Bigint *a, *b;
e8a9a9b
-#else
e8a9a9b
 	(Bigint *a, Bigint *b)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
-	double da, db;
e8a9a9b
+	U da, db;
e8a9a9b
 	int k, ka, kb;
e8a9a9b
 
e8a9a9b
 	dval(da) = b2d(a, &ka);
e8a9a9b
@@ -1453,11 +1369,7 @@ static CONST double tinytens[] = { 1e-16
e8a9a9b
 
e8a9a9b
  static int
e8a9a9b
 match
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(sp, t) char **sp, *t;
e8a9a9b
-#else
e8a9a9b
 	(CONST char **sp, CONST char *t)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	int c, d;
e8a9a9b
 	CONST char *s = *sp;
e8a9a9b
@@ -1475,11 +1387,7 @@ match
e8a9a9b
 #ifndef No_Hex_NaN
e8a9a9b
  static void
e8a9a9b
 hexnan
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(rvp, sp) double *rvp; CONST char **sp;
e8a9a9b
-#else
e8a9a9b
-	(double *rvp, CONST char **sp)
e8a9a9b
-#endif
e8a9a9b
+	(U *rvp, CONST char **sp)
e8a9a9b
 {
e8a9a9b
 	ULong c, x[2];
e8a9a9b
 	CONST char *s;
e8a9a9b
@@ -1528,12 +1436,8 @@ hexnan
e8a9a9b
 #endif /* INFNAN_CHECK */
e8a9a9b
 
e8a9a9b
  double
e8a9a9b
-kjs_strtod
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(s00, se) CONST char *s00; char **se;
e8a9a9b
-#else
e8a9a9b
+strtod
e8a9a9b
 	(CONST char *s00, char **se)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 #ifdef Avoid_Underflow
e8a9a9b
 	int scale;
e8a9a9b
@@ -1541,7 +1445,8 @@ kjs_strtod
e8a9a9b
 	int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, dsign,
e8a9a9b
 		 e, e1, esign, i, j, k, nd, nd0, nf, nz, nz0, sign;
e8a9a9b
 	CONST char *s, *s0, *s1;
e8a9a9b
-	double aadj, aadj1, adj, rv, rv0;
e8a9a9b
+	double aadj, aadj1, adj;
e8a9a9b
+	U aadj2, rv, rv0;
e8a9a9b
 	Long L;
e8a9a9b
 	ULong y, z;
e8a9a9b
 	Bigint *bb = NULL, *bb1 = NULL, *bd = NULL, *bd0 = NULL, *bs = NULL, *delta = NULL;
e8a9a9b
@@ -2302,7 +2207,9 @@ kjs_strtod
e8a9a9b
 					aadj = z;
e8a9a9b
 					aadj1 = dsign ? aadj : -aadj;
e8a9a9b
 					}
e8a9a9b
-				word0(aadj1) += (2*P+1)*Exp_msk1 - y;
e8a9a9b
+				dval(aadj2) = aadj1;
e8a9a9b
+				word0(aadj2) += (2*P+1)*Exp_msk1 - y;
e8a9a9b
+				aadj1 = dval(aadj2);
e8a9a9b
 				}
e8a9a9b
 			adj = aadj1 * ulp(dval(rv));
e8a9a9b
 			dval(rv) += adj;
e8a9a9b
@@ -2419,11 +2326,7 @@ kjs_strtod
e8a9a9b
 
e8a9a9b
  static int
e8a9a9b
 quorem
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(b, S) Bigint *b, *S;
e8a9a9b
-#else
e8a9a9b
 	(Bigint *b, Bigint *S)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	int n;
e8a9a9b
 	ULong *bx, *bxe, q, *sx, *sxe;
e8a9a9b
@@ -2461,7 +2364,7 @@ quorem
e8a9a9b
 			carry = ys >> 32;
e8a9a9b
 			y = *bx - (ys & FFFFFFFF) - borrow;
e8a9a9b
 			borrow = y >> 32 & (ULong)1;
e8a9a9b
-			*bx++ = y & FFFFFFFF;
e8a9a9b
+			*bx++ = (ULong)y & FFFFFFFF;
e8a9a9b
 #else
e8a9a9b
 #ifdef Pack_32
e8a9a9b
 			si = *sx++;
e8a9a9b
@@ -2502,7 +2405,7 @@ quorem
e8a9a9b
 			carry = ys >> 32;
e8a9a9b
 			y = *bx - (ys & FFFFFFFF) - borrow;
e8a9a9b
 			borrow = y >> 32 & (ULong)1;
e8a9a9b
-			*bx++ = y & FFFFFFFF;
e8a9a9b
+			*bx++ = (ULong)y & FFFFFFFF;
e8a9a9b
 #else
e8a9a9b
 #ifdef Pack_32
e8a9a9b
 			si = *sx++;
e8a9a9b
@@ -2540,11 +2443,7 @@ quorem
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
  static char *
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-rv_alloc(i) int i;
e8a9a9b
-#else
e8a9a9b
 rv_alloc(int i)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	int j, k, *r;
e8a9a9b
 
e8a9a9b
@@ -2563,11 +2462,7 @@ rv_alloc(int i)
e8a9a9b
 	}
e8a9a9b
 
e8a9a9b
  static char *
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-nrv_alloc(s, rve, n) char *s, **rve; int n;
e8a9a9b
-#else
e8a9a9b
 nrv_alloc(CONST char *s, char **rve, int n)
e8a9a9b
-#endif
e8a9a9b
 {
e8a9a9b
 	char *rv, *t;
e8a9a9b
 
e8a9a9b
@@ -2585,11 +2480,7 @@ nrv_alloc(CONST char *s, char **rve, int
e8a9a9b
  */
e8a9a9b
 
e8a9a9b
  void
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-kjs_freedtoa(s) char *s;
e8a9a9b
-#else
e8a9a9b
-kjs_freedtoa(char *s)
e8a9a9b
-#endif
e8a9a9b
+freedtoa(char *s)
e8a9a9b
 {
e8a9a9b
 	Bigint *b = (Bigint *)((int *)s - 1);
e8a9a9b
 	b->maxwds = 1 << (b->k = *(int*)b);
e8a9a9b
@@ -2635,13 +2526,8 @@ kjs_freedtoa(char *s)
e8a9a9b
  */
e8a9a9b
 
e8a9a9b
  char *
e8a9a9b
-kjs_dtoa
e8a9a9b
-#ifdef KR_headers
e8a9a9b
-	(d, mode, ndigits, decpt, sign, rve)
e8a9a9b
-	double d; int mode, ndigits, *decpt, *sign; char **rve;
e8a9a9b
-#else
e8a9a9b
-	(double d, int mode, int ndigits, int *decpt, int *sign, char **rve)
e8a9a9b
-#endif
e8a9a9b
+dtoa
e8a9a9b
+	(double dd, int mode, int ndigits, int *decpt, int *sign, char **rve)
e8a9a9b
 {
e8a9a9b
  /*	Arguments ndigits, decpt, sign are similar to those
e8a9a9b
 	of ecvt and fcvt; trailing zeros are suppressed from
e8a9a9b
@@ -2686,7 +2572,8 @@ kjs_dtoa
e8a9a9b
 	ULong x;
e8a9a9b
 #endif
e8a9a9b
 	Bigint *b, *b1, *delta, *mlo = NULL, *mhi, *S;
e8a9a9b
-	double d2, ds, eps;
e8a9a9b
+	U d, d2, eps;
e8a9a9b
+	double ds;
e8a9a9b
 	char *s, *s0;
e8a9a9b
 #ifdef Honor_FLT_ROUNDS
e8a9a9b
 	int rounding;
e8a9a9b
@@ -2697,11 +2584,12 @@ kjs_dtoa
e8a9a9b
 
e8a9a9b
 #ifndef MULTIPLE_THREADS
e8a9a9b
 	if (dtoa_result) {
e8a9a9b
-		kjs_freedtoa(dtoa_result);
e8a9a9b
+		freedtoa(dtoa_result);
e8a9a9b
 		dtoa_result = 0;
e8a9a9b
 		}
e8a9a9b
 #endif
e8a9a9b
 
e8a9a9b
+	dval(d) = dd;
e8a9a9b
 	if (word0(d) & Sign_bit) {
e8a9a9b
 		/* set sign for everything, including 0's and NaNs */
e8a9a9b
 		*sign = 1;
e8a9a9b
@@ -2966,7 +2854,8 @@ kjs_dtoa
e8a9a9b
 					if (dval(d) > 0.5 + dval(eps))
e8a9a9b
 						goto bump_up;
e8a9a9b
 					else if (dval(d) < 0.5 - dval(eps)) {
e8a9a9b
-						while(*--s == '0');
e8a9a9b
+						while(*--s == '0')
e8a9a9b
+							;
e8a9a9b
 						s++;
e8a9a9b
 						goto ret1;
e8a9a9b
 						}
e8a9a9b
@@ -3285,7 +3174,8 @@ kjs_dtoa
e8a9a9b
 #ifdef Honor_FLT_ROUNDS
e8a9a9b
 trimzeros:
e8a9a9b
 #endif
e8a9a9b
-		while(*--s == '0');
e8a9a9b
+		while(*--s == '0')
e8a9a9b
+			;
e8a9a9b
 		s++;
e8a9a9b
 		}
e8a9a9b
  ret: