[SDK] Do not use a NUL file while calculating format string length
authorMark Jansen <mark.jansen@reactos.org>
Thu, 8 Mar 2018 20:38:40 +0000 (21:38 +0100)
committerMark Jansen <mark.jansen@reactos.org>
Fri, 9 Mar 2018 23:04:57 +0000 (00:04 +0100)
CORE-14342

sdk/lib/crt/printf/_vscprintf.c
sdk/lib/crt/printf/_vscwprintf.c

index 5db594f..7b4e6b5 100644 (file)
@@ -15,14 +15,9 @@ _vscprintf(
    const char *format,
    va_list argptr)
 {
-    int ret;
-    FILE* nulfile = fopen("nul", "w");
-    if(nulfile == NULL)
-    {
-        /* This should never happen... */
-        return -1;
-    }
-    ret = streamout(nulfile, format, argptr);
-    fclose(nulfile);
-    return ret;
+    FILE nulfile;
+    nulfile._tmpfname = nulfile._ptr = nulfile._base = NULL;
+    nulfile._bufsiz = nulfile._charbuf = nulfile._cnt = 0;
+    nulfile._flag = _IOSTRG | _IOWRT;
+    return streamout(&nulfile, format, argptr);
 }
index f6b7e9d..5b01fc1 100644 (file)
@@ -22,15 +22,11 @@ _vscwprintf(
 {
     int ret;
 #ifndef _LIBCNT_
-    FILE* nulfile;
-    nulfile = fopen("nul", "w");
-    if(nulfile == NULL)
-    {
-        /* This should never happen... */
-        return -1;
-    }
-    ret = wstreamout(nulfile, format, argptr);
-    fclose(nulfile);
+    FILE nulfile;
+    nulfile._tmpfname = nulfile._ptr = nulfile._base = NULL;
+    nulfile._bufsiz = nulfile._charbuf = nulfile._cnt = 0;
+    nulfile._flag = _IOSTRG | _IOWRT;
+    ret = wstreamout(&nulfile, format, argptr);
 #else
     ret = -1;
 #endif