summaryrefslogtreecommitdiffstats
path: root/lib/libc/stdio/setvbuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/stdio/setvbuf.c')
-rw-r--r--lib/libc/stdio/setvbuf.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/libc/stdio/setvbuf.c b/lib/libc/stdio/setvbuf.c
index 9b92bf08113..21db80dbbdb 100644
--- a/lib/libc/stdio/setvbuf.c
+++ b/lib/libc/stdio/setvbuf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: setvbuf.c,v 1.8 2005/08/08 08:05:36 espie Exp $ */
+/* $OpenBSD: setvbuf.c,v 1.9 2009/10/21 16:04:23 guenther Exp $ */
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
@@ -61,6 +61,7 @@ setvbuf(FILE *fp, char *buf, int mode, size_t size)
* malloc()ed. We also clear any eof condition, as if this were
* a seek.
*/
+ FLOCKFILE(fp);
ret = 0;
(void)__sflush(fp);
if (HASUB(fp))
@@ -107,6 +108,7 @@ nbf:
fp->_w = 0;
fp->_bf._base = fp->_p = fp->_nbuf;
fp->_bf._size = 1;
+ FUNLOCKFILE(fp);
return (ret);
}
flags |= __SMBF;
@@ -145,6 +147,7 @@ nbf:
/* begin/continue reading, or stay in intermediate state */
fp->_w = 0;
}
+ FUNLOCKFILE(fp);
__atexit_register_cleanup(_cleanup);
return (ret);