From e74736b544df96dbc776598af110eca43f82a3f0 Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Sun, 1 Oct 2006 11:36:34 +0000 Subject: 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@ --- lib/libc/stdlib/strtod.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lib/libc') diff --git a/lib/libc/stdlib/strtod.c b/lib/libc/stdlib/strtod.c index d01158e10c1..3081cb5cc72 100644 --- a/lib/libc/stdlib/strtod.c +++ b/lib/libc/stdlib/strtod.c @@ -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. @@ -1128,7 +1128,12 @@ strtod(CONST char *s00, char **se) e, e1, esign, i, j, k, nd, nd0, nf, nz, nz0, sign; CONST char *s, *s0, *s1; 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; ULong y, z; Bigint *bb, *bb1, *bd, *bd0, *bs, *delta; -- cgit v1.2.3