for conversion specifiers, alloc is always set when the specifier is
parsed. however, if scanf stops due to mismatching literal text,
either an uninitialized (if no conversions have been performed yet) or
stale (from the previous conversion) of the flag will be used,
possibly causing an invalid pointer to be passed to free when the
function returns.
for (p=(const unsigned char *)fmt; *p; p++) {
+ alloc = 0;
+
if (isspace(*p)) {
while (isspace(p[1])) p++;
shlim(f, 0);
for (p=fmt; *p; p++) {
+ alloc = 0;
+
if (iswspace(*p)) {
while (iswspace(p[1])) p++;
while (iswspace((c=getwc(f)))) pos++;