This is the mail archive of the
libc-hacker@sourceware.cygnus.com
mailing list for the glibc project.
Re: A libio patch for glibc 2.0.7
- To: libc-hacker@cygnus.com (GNU C Library)
- Subject: Re: A libio patch for glibc 2.0.7
- From: hjl@lucon.org (H.J. Lu)
- Date: Sun, 23 Aug 1998 10:11:58 -0700 (PDT)
- Cc: drepper@cygnus.com (Ulrich Drepper)
Hi, Ulrich,
This modified version may generate better code.
--
H.J. Lu (hjl@gnu.org)
---
Index: libio/vsnprintf.c
===================================================================
RCS file: /home/work/cvs/gnu/glibc-2.0/libio/vsnprintf.c,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 vsnprintf.c
--- vsnprintf.c 1997/09/19 18:10:38 1.1.1.1
+++ vsnprintf.c 1998/08/23 17:08:58
@@ -45,7 +45,12 @@ _IO_vsnprintf (string, maxlen, format, a
_IO_init ((_IO_FILE *) &sf, 0);
_IO_JUMPS ((_IO_FILE *) &sf) = &_IO_str_jumps;
- _IO_str_init_static ((_IO_FILE *) &sf, string, maxlen - 1, string);
+ maxlen--;
+ if (maxlen == 0)
+ /* This is a very special case since _IO_str_init_static () will
+ use strlen (string) for the size of string if maxlen == 0. */
+ string [0] = '\0';
+ _IO_str_init_static ((_IO_FILE *) &sf, string, maxlen, string);
ret = _IO_vfprintf ((_IO_FILE *) &sf, format, args);
*((_IO_FILE *) &sf)->_IO_write_ptr = '\0';
return ret;