Browse Source

Make a var volatile, which forces a mem write at the right spot, and

detctecion of underflow where it would otherwise not  happen for FPUs
that have a larger register size than sizeof double (i386, m68k). ok
deraadt@ weingart@ kettenis@
OPENBSD_4_1
otto 18 years ago
parent
commit
d629c2a385
1 changed files with 7 additions and 2 deletions
  1. +7
    -2
      src/lib/libc/stdlib/strtod.c

+ 7
- 2
src/lib/libc/stdlib/strtod.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: strtod.c,v 1.22 2006/05/19 14:15:27 thib Exp $ */
/* $OpenBSD: strtod.c,v 1.23 2006/10/01 11:36:33 otto Exp $ */
/**************************************************************** /****************************************************************
* *
* The author of this software is David M. Gay. * The author of this software is David M. Gay.
@ -1128,7 +1128,12 @@ strtod(CONST char *s00, char **se)
e, e1, esign, i, j, k, nd, nd0, nf, nz, nz0, sign; e, e1, esign, i, j, k, nd, nd0, nf, nz, nz0, sign;
CONST char *s, *s0, *s1; CONST char *s, *s0, *s1;
double aadj, aadj1, adj; double aadj, aadj1, adj;
_double rv, rv0;
/*
* volatile forces mem update for FPUs where reg size != sizeof double,
* which should trigger ERANGE in the case of underflow.
*/
volatile _double rv;
_double rv0;
Long L; Long L;
ULong y, z; ULong y, z;
Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta;


Loading…
Cancel
Save