summary refs log tree commit diff
path: root/stdio-common/vfprintf.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-04-07 20:39:52 +0000
committerUlrich Drepper <drepper@redhat.com>1998-04-07 20:39:52 +0000
commit3c720987c599927e9a8764b9362e4751c00ec1b1 (patch)
tree06bf1535b0a1774b393c9b0059115779f1b7a960 /stdio-common/vfprintf.c
parentdbe7a0f5de17e8fa52ec6d2c9356796ef19af7c8 (diff)
downloadglibc-3c720987c599927e9a8764b9362e4751c00ec1b1.tar.gz
glibc-3c720987c599927e9a8764b9362e4751c00ec1b1.tar.xz
glibc-3c720987c599927e9a8764b9362e4751c00ec1b1.zip
Update.
1998-04-07 20:32  Ulrich Drepper  <drepper@cygnus.com>

	* wcsmbs/btowc.c: Fix dozends of bugs in untested code.
	* wcsmbs/mbrtowc.c: Likewise.
	* wcsmbs/mbsnrtowcs.c: Likewise.
	* wcsmbs/mbsrtowcs.c: Likewise.
	* wcsmbs/wcrtomb.c: Likewise.
	* wcsmbs/wcsnrtombs.c: Likewise.
	* wcsmbs/wcsrtombs.c: Likewise.
	* wcsmbs/wctob.c: Likewise.

	* iconv/gconv-simple.c (__gconv_transform_ascii_ucs4): Compute
	position of next output character correctly.
	(__gconv_transform_ucs4_ascii): Count used input bytes correctly.

	* stdio-common/vfprintf.c (vfprintf): Clear state before used.

	* stdlib/strtod.c: Don't use mbtowc.

1998-04-07 19:07  H.J. Lu  <hjl@gnu.org>

	* libio/fileops.c (_IO_file_xsgetn): Call __underflow () when
	what we want is smaller than a buffer.

1998-04-07 18:14  Ulrich Drepper  <drepper@cygnus.com>

	* elf/dl-support.c (_dl_important_hwcaps): Define dummy version of
	this function.
Diffstat (limited to 'stdio-common/vfprintf.c')
-rw-r--r--stdio-common/vfprintf.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
index e6c2df25d6..e13785f3a3 100644
--- a/stdio-common/vfprintf.c
+++ b/stdio-common/vfprintf.c
@@ -826,6 +826,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 	mbstate_t mbstate;						      \
 	size_t len;							      \
 									      \
+	memset (&mbstate, '\0', sizeof (mbstate_t));			      \
 	len = __wcrtomb (buf, (fspec == NULL ? va_arg (ap, wint_t)	      \
 			       : args_value[fspec->data_arg].pa_wchar),	      \
 			 &mbstate);					      \
@@ -880,6 +881,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 	    const wchar_t *s2 = (const wchar_t *) string;		      \
 	    mbstate_t mbstate;						      \
 									      \
+	    memset (&mbstate, '\0', sizeof (mbstate_t));		      \
 	    len = __wcsrtombs (NULL, &s2, 0, &mbstate);			      \
 	    if (len == (size_t) -1)					      \
 	      /* Illegal wide-character string.  */			      \
@@ -887,6 +889,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 									      \
 	    s2 = (const wchar_t *) string;				      \
 	    string = alloca (len + 1);					      \
+	    memset (&mbstate, '\0', sizeof (mbstate_t));		      \
 	    (void) __wcsrtombs (string, &s2, prec != -1 ? prec : UINT_MAX,    \
 				&mbstate);				      \
 	  }								      \
@@ -993,6 +996,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 #endif
   nspecs_done = 0;
 
+  /* Put state for processing format string in initial state.  */
+  memset (&mbstate, '\0', sizeof (mbstate_t));
+
   /* Find the first format specifier.  */
   f = lead_str_end = find_spec (format, &mbstate);