Loading...
stdio/FreeBSD/vfprintf.c Libc-1158.1.2 Libc-997.90.3
--- Libc/Libc-1158.1.2/stdio/FreeBSD/vfprintf.c
+++ Libc/Libc-997.90.3/stdio/FreeBSD/vfprintf.c
@@ -890,11 +890,11 @@
 			if (flags & LONGINT) {
 				wchar_t *wcp;
 
-				free(convbuf);
-				if ((wcp = GETARG(wchar_t *)) == NULL) {
-					convbuf = NULL;
+				if (convbuf != NULL)
+					free(convbuf);
+				if ((wcp = GETARG(wchar_t *)) == NULL)
 					cp = "(null)";
-				} else {
+				else {
 					convbuf = __wcsconv(wcp, prec, loc);
 					if (convbuf == NULL) {
 						fp->_flags |= __SERR;
@@ -1390,7 +1390,8 @@
 	if (dtoaresult != NULL)
 		freedtoa(dtoaresult);
 #endif
-	free(convbuf);
+	if (convbuf != NULL)
+		free(convbuf);
 	if (__sferror(fp))
 		ret = EOF;
 	if ((argtable != NULL) && (argtable != statargtable))