1 /* This code used to crash fold_convert due to PRE 2 wanting to fold_convert from a REAL_TYPE to an INTEGER_TYPE. */ 3 typedef unsigned int uint32_t; 4 union double_union 5 { 6 double d; 7 uint32_t i[2]; 8 }; 9 struct _Jv_reent 10 { 11 int _errno; 12 }; _Jv_strtod_r(struct _Jv_reent * ptr,char ** se)13_Jv_strtod_r (struct _Jv_reent *ptr, char **se) 14 { 15 int bb2, sign; 16 double aadj, aadj1, adj; 17 unsigned long y, z; 18 union double_union rv, *bs = ((void *) 0), *delta = ((void *) 0); 19 { 20 ovfl:ptr->_errno = 34; 21 { 22 (((uint32_t) 0xfffffL) | ((uint32_t) 0x100000L) * (1024 + 1023 - 1)); 23 } 24 if ((aadj = _Jv_ratio (delta, bs)) <= 2.) 25 { 26 { 27 if (aadj < 2. / 2) 28 aadj = 1. / 2; 29 aadj1 = -aadj; 30 } 31 } 32 { 33 (rv.i[1]) -= 53 * ((uint32_t) 0x100000L); 34 adj = aadj1 * _Jv_ulp (rv.d); 35 rv.d += adj; 36 if (((rv.i[1]) & ((uint32_t) 0x7ff00000L)) >= 37 ((uint32_t) 0x100000L) * (1024 + 1023 - 53)) 38 { 39 goto ovfl; 40 } 41 } 42 } 43 } 44