Loading...
stdio/FreeBSD/vswprintf.c Libc-594.1.4 Libc-320.1.3
--- Libc/Libc-594.1.4/stdio/FreeBSD/vswprintf.c
+++ Libc/Libc-320.1.3/stdio/FreeBSD/vswprintf.c
@@ -31,7 +31,7 @@
 #if 0
 __FBSDID("FreeBSD: src/lib/libc/stdio/vasprintf.c,v 1.16 2002/08/21 16:19:57 mike Exp ");
 #endif
-__FBSDID("$FreeBSD: src/lib/libc/stdio/vswprintf.c,v 1.5 2004/04/07 09:55:05 tjr Exp $");
+__FBSDID("$FreeBSD: src/lib/libc/stdio/vswprintf.c,v 1.3 2003/01/07 06:20:47 tjr Exp $");
 
 #include <errno.h>
 #include <stdio.h>
@@ -43,10 +43,9 @@
 vswprintf(wchar_t * __restrict s, size_t n, const wchar_t * __restrict fmt,
     __va_list ap)
 {
-	static const mbstate_t initial;
-	mbstate_t mbs;
 	FILE f;
 	struct __sFILEX ext;
+	mbstate_t mbs;
 	char *mbp;
 	int ret, sverrno;
 
@@ -74,11 +73,11 @@
 	}
 	*f._p = '\0';
 	mbp = f._bf._base;
+	memset(&mbs, 0, sizeof(mbs));
 	/*
 	 * XXX Undo the conversion from wide characters to multibyte that
 	 * fputwc() did in __vfwprintf().
 	 */
-	mbs = initial;
 	if (mbsrtowcs(s, (const char **)&mbp, n, &mbs) == (size_t)-1) {
 		free(f._bf._base);
 		errno = EILSEQ;