Merged in david_s5/nuttx/upstream_to_greg_scanfwidth (pull request #150)

Fixes sscan %sn where strlen(data) < n - Indenting removed!
This commit is contained in:
Gregory Nutt 2016-10-15 16:46:18 +00:00
commit 44b790c360

View File

@ -174,6 +174,7 @@ int vsscanf(FAR const char *buf, FAR const char *fmt, va_list ap)
bool noassign;
int count;
int width;
int fwidth;
int base = 10;
char tmp[MAXLN];
@ -275,16 +276,22 @@ int vsscanf(FAR const char *buf, FAR const char *fmt, va_list ap)
buf++;
}
/* Was a fieldwidth specified? */
/* Guess a field width using some heuristics */
if (!width)
fwidth = findwidth(buf, fmt);
/* Use the actual field's width if 1) no fieldwidth
* specified or 2) the actual field's width is smaller
* than fieldwidth specified
*/
if (!width || fwidth < width)
{
/* No... Guess a field width using some heuristics */
int tmpwidth = findwidth(buf, fmt);
width = MIN(sizeof(tmp) - 1, tmpwidth);
width = fwidth;
}
width = MIN(sizeof(tmp) - 1, width);
/* Copy the string (if we are making an assignment) */
if (!noassign)