summaryrefslogtreecommitdiff
path: root/src/lib/libc/stdlib/gcvt.c
diff options
context:
space:
mode:
authorderaadt <>2006-10-29 18:45:56 +0000
committerderaadt <>2006-10-29 18:45:56 +0000
commitaede99584cb0d715ac3f7c41068bc88f09d2a61b (patch)
treee411f8b9691e52e1f9798a36d7cf41201ee8300d /src/lib/libc/stdlib/gcvt.c
parent182ec138408d8727b97aa8a6b7faef3a1c05037b (diff)
downloadopenbsd-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.c5
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
28extern char *__dtoa(double, int, int, int *, int *, char **); 28extern char *__dtoa(double, int, int, int *, int *, char **);
29extern void __freedtoa(char *);
29 30
30char * 31char *
31gcvt(double value, int ndigit, char *buf) 32gcvt(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}