newlib: [w]scanf: Fix behaviour on matching failure
The special handling of %\0 in [w]scanf is flawed. It's just a matching failure and should be handled as such. scanf also fakes an int input value on %X with X being an invalid conversion char. This is also just a matching failure and should be handled the same way as %\0. There's no indication of the reason for this "disgusting backwards compatibility hacks" in the logs, given this code made it into newlib before setting up the CVS repo. Just handle these cases identically as matching failures. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
3913811454
commit
1bbdb3c953
|
@ -787,20 +787,8 @@ _DEFUN(__SVFSCANF_R, (rptr, fp, fmt0, ap),
|
|||
}
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Disgusting backwards compatibility hacks. XXX
|
||||
*/
|
||||
case '\0': /* compat */
|
||||
_newlib_flockfile_exit (fp);
|
||||
return EOF;
|
||||
|
||||
default: /* compat */
|
||||
if (isupper (c))
|
||||
flags |= LONG;
|
||||
c = CT_INT;
|
||||
ccfn = (u_long (*)CCFN_PARAMS)_strtol_r;
|
||||
base = 10;
|
||||
break;
|
||||
default:
|
||||
goto match_failure;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -740,14 +740,7 @@ _DEFUN(__SVFWSCANF_R, (rptr, fp, fmt0, ap),
|
|||
}
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Disgusting backwards compatibility hacks. XXX
|
||||
*/
|
||||
case L'\0': /* compat */
|
||||
_newlib_flockfile_exit (fp);
|
||||
return EOF;
|
||||
|
||||
default: /* compat */
|
||||
default:
|
||||
goto match_failure;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue