From: Owen Shepherd Date: Wed, 20 Feb 2013 01:04:40 +0000 (+0000) Subject: setvbuf: lock file appropriately X-Git-Url: https://pd.if.org/git/?p=pdclib.old;a=commitdiff_plain;h=28e3db287a10345bae09370003757fbf41787015 setvbuf: lock file appropriately --- diff --git a/functions/stdio/setvbuf.c b/functions/stdio/setvbuf.c index 8754727..d8470fc 100644 --- a/functions/stdio/setvbuf.c +++ b/functions/stdio/setvbuf.c @@ -15,6 +15,7 @@ int setvbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mode, size_t size ) { + _PDCLIB_lockfile( stream ); switch ( mode ) { case _IONBF: @@ -30,6 +31,7 @@ int setvbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mo /* PDCLib only supports buffers up to INT_MAX in size. A size of zero doesn't make sense. */ + _PDCLIB_funlockfile( stream ); return -1; } if ( buf == NULL ) @@ -48,6 +50,7 @@ int setvbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mo if ( ( buf = (char *) malloc( size ) ) == NULL ) { /* Out of memory error. */ + _PDCLIB_funlockfile( stream ); return -1; } /* This buffer must be free()d on fclose() */ @@ -59,12 +62,14 @@ int setvbuf( FILE * _PDCLIB_restrict stream, char * _PDCLIB_restrict buf, int mo break; default: /* If mode is something else than _IOFBF, _IOLBF or _IONBF -> exit */ + _PDCLIB_funlockfile( stream ); return -1; } /* Deleting current buffer mode */ stream->status &= ~( _IOFBF | _IOLBF | _IONBF ); /* Set user-defined mode */ stream->status |= mode; + _PDCLIB_funlockfile( stream ); return 0; }