diff options
author | deraadt <> | 2006-10-29 18:45:56 +0000 |
---|---|---|
committer | deraadt <> | 2006-10-29 18:45:56 +0000 |
commit | aede99584cb0d715ac3f7c41068bc88f09d2a61b (patch) | |
tree | e411f8b9691e52e1f9798a36d7cf41201ee8300d /src/lib/libc/stdlib/gcvt.c | |
parent | 182ec138408d8727b97aa8a6b7faef3a1c05037b (diff) | |
download | openbsd-aede99584cb0d715ac3f7c41068bc88f09d2a61b.tar.gz openbsd-aede99584cb0d715ac3f7c41068bc88f09d2a61b.tar.bz2 openbsd-aede99584cb0d715ac3f7c41068bc88f09d2a61b.zip |
make __dtoa & strtod() thread-safe useing the same method as newer gdtoa
codebase. tested mostly by ckuethe and myself. __dtoa() use now requires
a call to __freedtoa()
Diffstat (limited to 'src/lib/libc/stdlib/gcvt.c')
-rw-r--r-- | src/lib/libc/stdlib/gcvt.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/libc/stdlib/gcvt.c b/src/lib/libc/stdlib/gcvt.c index bc6295c03d..c24157e465 100644 --- a/src/lib/libc/stdlib/gcvt.c +++ b/src/lib/libc/stdlib/gcvt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: gcvt.c,v 1.9 2006/01/10 16:18:37 millert Exp $ */ | 1 | /* $OpenBSD: gcvt.c,v 1.10 2006/10/29 18:45:56 deraadt Exp $ */ |
2 | 2 | ||
3 | /* | 3 | /* |
4 | * Copyright (c) 2002, 2003, 2006 Todd C. Miller <Todd.Miller@courtesan.com> | 4 | * Copyright (c) 2002, 2003, 2006 Todd C. Miller <Todd.Miller@courtesan.com> |
@@ -26,6 +26,7 @@ | |||
26 | #include <string.h> | 26 | #include <string.h> |
27 | 27 | ||
28 | extern char *__dtoa(double, int, int, int *, int *, char **); | 28 | extern char *__dtoa(double, int, int, int *, int *, char **); |
29 | extern void __freedtoa(char *); | ||
29 | 30 | ||
30 | char * | 31 | char * |
31 | gcvt(double value, int ndigit, char *buf) | 32 | gcvt(double value, int ndigit, char *buf) |
@@ -48,6 +49,7 @@ gcvt(double value, int ndigit, char *buf) | |||
48 | */ | 49 | */ |
49 | snprintf(buf, ndigit + 1, "%s%s", sign ? "-" : "", | 50 | snprintf(buf, ndigit + 1, "%s%s", sign ? "-" : "", |
50 | *digits == 'I' ? "inf" : "nan"); | 51 | *digits == 'I' ? "inf" : "nan"); |
52 | __freedtoa(digits); | ||
51 | return (buf); | 53 | return (buf); |
52 | } | 54 | } |
53 | 55 | ||
@@ -104,5 +106,6 @@ gcvt(double value, int ndigit, char *buf) | |||
104 | } | 106 | } |
105 | *dst = '\0'; | 107 | *dst = '\0'; |
106 | } | 108 | } |
109 | __freedtoa(digits); | ||
107 | return (buf); | 110 | return (buf); |
108 | } | 111 | } |