fix wide scanf's use of a compound literal past its lifetime
authorRich Felker <dalias@aerifal.cx>
Tue, 14 Mar 2017 19:06:58 +0000 (15:06 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 14 Mar 2017 19:06:58 +0000 (15:06 -0400)
src/stdio/vfwscanf.c

index 223aad4..1ebc5ce 100644 (file)
@@ -214,11 +214,12 @@ int vfwscanf(FILE *restrict f, const wchar_t *restrict fmt, va_list ap)
                                set = L"";
                        } else if (t == 's') {
                                invert = 1;
-                               set = (const wchar_t[]){
+                               static const wchar_t spaces[] = {
                                        ' ', '\t', '\n', '\r', 11, 12,  0x0085,
                                        0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005,
                                        0x2006, 0x2008, 0x2009, 0x200a,
                                        0x2028, 0x2029, 0x205f, 0x3000, 0 };
+                               set = spaces;
                        } else {
                                if (*++p == '^') p++, invert = 1;
                                else invert = 0;