2004-05-27 Jeff Johnston <jjohnstn@redhat.com>

* libc/stdio/vfprintf.c (_VFPRINTF): Move file locking
        from here ...
        (_VFPRINTF_R): ... to here so all I/O printf routines
        are covered.
This commit is contained in:
Jeff Johnston 2004-05-27 14:56:54 +00:00
parent 6d70519a4b
commit 3f611058b7
2 changed files with 17 additions and 5 deletions

View File

@ -1,3 +1,10 @@
2004-05-27 Jeff Johnston <jjohnstn@redhat.com>
* libc/stdio/vfprintf.c (_VFPRINTF): Move file locking
from here ...
(_VFPRINTF_R): ... to here so all I/O printf routines
are covered.
2004-05-26 Jeff Johnston <jjohnstn@redhat.com>
* libc/search/hash_buf.c: Protect MAX and MIN macros from

View File

@ -381,10 +381,7 @@ _DEFUN(VFPRINTF, (fp, fmt0, ap),
va_list ap)
{
int result;
_flockfile (fp);
CHECK_INIT (fp);
result = _VFPRINTF_R (_REENT, fp, fmt0, ap);
_funlockfile (fp);
return result;
}
@ -536,14 +533,21 @@ _DEFUN(_VFPRINTF_R, (data, fp, fmt0, ap),
(u_long)GET_ARG (N, ap, u_int))
#endif
_flockfile (fp);
CHECK_INIT (fp);
/* sorry, fprintf(read_only_file, "") returns EOF, not 0 */
if (cantwrite (fp))
if (cantwrite (fp)) {
_funlockfile (fp);
return (EOF);
}
/* optimise fprintf(stderr) (and other unbuffered Unix files) */
if ((fp->_flags & (__SNBF|__SWR|__SRW)) == (__SNBF|__SWR) &&
fp->_file >= 0)
fp->_file >= 0) {
_funlockfile (fp);
return (__sbprintf (data, fp, fmt0, ap));
}
fmt = (char *)fmt0;
uio.uio_iov = iovp = iov;
@ -1211,6 +1215,7 @@ done:
error:
if (malloc_buf != NULL)
_free_r (data, malloc_buf);
_funlockfile (fp);
return (__sferror (fp) ? EOF : ret);
/* NOTREACHED */
}