Browse Source

Return inf or nan as per printf() not Inf, Infinity or Nan (from dtoa)

Remove an extraneous check for dtoa returning Inf/Nan
OPENBSD_3_9
millert 19 years ago
parent
commit
09125d08dd
2 changed files with 15 additions and 11 deletions
  1. +7
    -7
      src/lib/libc/stdlib/ecvt.c
  2. +8
    -4
      src/lib/libc/stdlib/gcvt.c

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

@ -1,7 +1,7 @@
/* $OpenBSD: ecvt.c,v 1.4 2005/08/08 08:05:36 espie Exp $ */
/* $OpenBSD: ecvt.c,v 1.5 2006/01/10 16:18:37 millert Exp $ */
/*
* Copyright (c) 2002 Todd C. Miller <Todd.Miller@courtesan.com>
* Copyright (c) 2002, 2006 Todd C. Miller <Todd.Miller@courtesan.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -62,11 +62,11 @@ __cvt(double value, int ndigit, int *decpt, int *sign, int fmode, int pad)
} else {
p = __dtoa(value, fmode + 2, ndigit, decpt, sign, &rve);
if (*decpt == 9999) {
/* Nan or Infinity */
/* Infinity or Nan, convert to inf or nan like printf */
*decpt = 0;
return(p);
return(*p == 'I' ? "inf" : "nan");
}
/* make a local copy and adjust rve to be in terms of s */
/* Make a local copy and adjust rve to be in terms of s */
if (pad && fmode)
siz += *decpt;
if ((s = (char *)malloc(siz)) == NULL)
@ -75,8 +75,8 @@ __cvt(double value, int ndigit, int *decpt, int *sign, int fmode, int pad)
rve = s + (rve - p);
}
/* Add trailing zeros (unless we got NaN or Inf) */
if (pad && *decpt != 9999) {
/* Add trailing zeros */
if (pad) {
siz -= rve - s;
while (--siz)
*rve++ = '0';


+ 8
- 4
src/lib/libc/stdlib/gcvt.c View File

@ -1,7 +1,7 @@
/* $OpenBSD: gcvt.c,v 1.8 2006/01/10 02:23:02 millert Exp $ */
/* $OpenBSD: gcvt.c,v 1.9 2006/01/10 16:18:37 millert Exp $ */
/*
* Copyright (c) 2002, 2003 Todd C. Miller <Todd.Miller@courtesan.com>
* Copyright (c) 2002, 2003, 2006 Todd C. Miller <Todd.Miller@courtesan.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@ -42,8 +42,12 @@ gcvt(double value, int ndigit, char *buf)
digits = __dtoa(value, 2, ndigit, &decpt, &sign, NULL);
if (decpt == 9999) {
/* Infinity or NaN, assume buffer is at least ndigit long. */
snprintf(buf, ndigit + 1, "%s%s", sign ? "-" : "", digits);
/*
* Infinity or NaN, convert to inf or nan with sign.
* We assume the buffer is at least ndigit long.
*/
snprintf(buf, ndigit + 1, "%s%s", sign ? "-" : "",
*digits == 'I' ? "inf" : "nan");
return (buf);
}


Loading…
Cancel
Save