1. EOF was returned when the buffer size was larger than INT_MAX. This

case has very little to do with the output size being larger than
   INT_MAX.
2. The new #include of <limits.h> was disordered.
3. The new declaration of `on' was disordered (integer types go together).
4. Testing an unsigned value for > 0 was fishy.

Submitted by: bde
This commit is contained in:
Andrey A. Chernov 1998-01-01 20:15:58 +00:00
parent 069db8db47
commit 8c6d2f42e1
2 changed files with 10 additions and 10 deletions

View File

@ -39,16 +39,16 @@
static char sccsid[] = "@(#)snprintf.c 8.1 (Berkeley) 6/4/93";
#endif
static const char rcsid[] =
"$Id: snprintf.c,v 1.9 1997/12/24 23:02:40 ache Exp $";
"$Id: snprintf.c,v 1.10 1997/12/24 23:54:13 ache Exp $";
#endif /* LIBC_SCCS and not lint */
#include <limits.h>
#include <stdio.h>
#if __STDC__
#include <stdarg.h>
#else
#include <varargs.h>
#endif
#include <limits.h>
#if __STDC__
int
@ -62,16 +62,16 @@ snprintf(str, n, fmt, va_alist)
va_dcl
#endif
{
size_t on;
int ret;
va_list ap;
FILE f;
size_t on;
on = n;
if (n > 0)
if (n != 0)
n--;
if (n > INT_MAX)
return (EOF);
n = INT_MAX;
#if __STDC__
va_start(ap, fmt);
#else

View File

@ -39,11 +39,11 @@
static char sccsid[] = "@(#)vsnprintf.c 8.1 (Berkeley) 6/4/93";
#endif
static const char rcsid[] =
"$Id: vsnprintf.c,v 1.9 1997/12/24 23:02:47 ache Exp $";
"$Id: vsnprintf.c,v 1.10 1997/12/24 23:54:19 ache Exp $";
#endif /* LIBC_SCCS and not lint */
#include <stdio.h>
#include <limits.h>
#include <stdio.h>
int
vsnprintf(str, n, fmt, ap)
@ -52,15 +52,15 @@ vsnprintf(str, n, fmt, ap)
const char *fmt;
_BSD_VA_LIST_ ap;
{
size_t on;
int ret;
FILE f;
size_t on;
on = n;
if (n > 0)
if (n != 0)
n--;
if (n > INT_MAX)
return (EOF);
n = INT_MAX;
f._file = -1;
f._flags = __SWR | __SSTR;
f._bf._base = f._p = (unsigned char *)str;