diff options
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/stdio/local.h | 7 | ||||
-rw-r--r-- | lib/libc/stdio/sscanf.c | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/lib/libc/stdio/local.h b/lib/libc/stdio/local.h index 4f5242a..3e498d3 100644 --- a/lib/libc/stdio/local.h +++ b/lib/libc/stdio/local.h @@ -103,3 +103,10 @@ struct __sFILEX { free((char *)(fp)->_lb._base); \ (fp)->_lb._base = NULL; \ } + +#define INITEXTRA(fp) { \ + (fp)->_extra->_up = NULL; \ + (fp)->_extra->fl_mutex = PTHREAD_MUTEX_INITIALIZER; \ + (fp)->_extra->fl_owner = NULL; \ + (fp)->_extra->fl_count = 0; \ +} diff --git a/lib/libc/stdio/sscanf.c b/lib/libc/stdio/sscanf.c index 2ed797e..c887788 100644 --- a/lib/libc/stdio/sscanf.c +++ b/lib/libc/stdio/sscanf.c @@ -77,6 +77,7 @@ sscanf(str, fmt, va_alist) { int ret; va_list ap; + struct __sFILEX extra; FILE f; f._file = -1; @@ -86,6 +87,8 @@ sscanf(str, fmt, va_alist) f._read = eofread; f._ub._base = NULL; f._lb._base = NULL; + f._extra = &extra; + INITEXTRA(&f); #if __STDC__ va_start(ap, fmt); #else |