* libc/stdio/gets.c (_gets_r): Lock stdin here and call

__sgetc_r instead of _getchar_r.
This commit is contained in:
Corinna Vinschen 2008-11-25 09:33:43 +00:00
parent de33833d1f
commit a11451b353
2 changed files with 12 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2008-11-25 Corinna Vinschen <corinna@vinschen.de>
* libc/stdio/gets.c (_gets_r): Lock stdin here and call
__sgetc_r instead of _getchar_r.
2008-11-24 Craig Howland <howland@LGSInnovations.com> 2008-11-24 Craig Howland <howland@LGSInnovations.com>
* libc/stdlib/wcstoull_r.c: Add EINVAL return for bad base value, * libc/stdlib/wcstoull_r.c: Add EINVAL return for bad base value,

View File

@ -79,15 +79,20 @@ _DEFUN(_gets_r, (ptr, buf),
register int c; register int c;
register char *s = buf; register char *s = buf;
while ((c = _getchar_r (ptr)) != '\n') _flockfile (stdin);
while ((c = __sgetc_r (ptr, stdin)) != '\n')
if (c == EOF) if (c == EOF)
if (s == buf) if (s == buf)
return NULL; {
_funlockfile (stdin);
return NULL;
}
else else
break; break;
else else
*s++ = c; *s++ = c;
*s = 0; *s = 0;
_funlockfile (stdin);
return buf; return buf;
} }