From 67994d6f6010739c22b1b4ab99aa88b4fe1ab8bd Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 23 Jun 1999 12:38:51 +0000 Subject: Update. 1999-06-23 Ulrich Drepper * manual/arith.texi: Document restriction of ndigit parameter of ecvt and friends. * misc/efgcvt.c: Define NDIGIT_MAX. (gcvt): Limit precision in sprintf call to NDIGIT_MAX. Do not dynamically allocate the static buffers. They are small enough. * misc/efgcvt_r.c: Define NDIGIT_MAX. (fcvt_r): Limit precision in snprintf call to NDIGIT_MAX. * misc/qefgcvt.c: Define NDIGIT_MAX. * misc/qefgcvt_r.c: Likewise. * misc/tst-efgcvt.c (special): Add test for large ndigit parameter. --- misc/efgcvt_r.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'misc/efgcvt_r.c') diff --git a/misc/efgcvt_r.c b/misc/efgcvt_r.c index 1c237eed4a..167bd7a809 100644 --- a/misc/efgcvt_r.c +++ b/misc/efgcvt_r.c @@ -1,5 +1,5 @@ /* Compatibility functions for floating point formatting, reentrant versions. - Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -26,10 +26,11 @@ #include #ifndef FLOAT_TYPE -#define FLOAT_TYPE double -#define FUNC_PREFIX -#define FLOAT_FMT_FLAG -#define FLOAT_NAME_EXT +# define FLOAT_TYPE double +# define FUNC_PREFIX +# define FLOAT_FMT_FLAG +# define FLOAT_NAME_EXT +# define NDIGIT_MAX DBL_DIG #endif #define APPEND(a, b) APPEND2 (a, b) @@ -87,7 +88,8 @@ APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign, buf, len) /* Value is Inf or NaN. */ *sign = 0; - n = __snprintf (buf, len, "%.*" FLOAT_FMT_FLAG "f", ndigit, value); + n = __snprintf (buf, len, "%.*" FLOAT_FMT_FLAG "f", MIN (ndigit, NDIGIT_MAX), + value); if (n < 0) return -1; -- cgit v1.2.3