Browse Source

Forget to initialize thread locks for fake files. Thanks Erik.

Manuel Novoa III 22 years ago
parent
commit
cecb282ed3
2 changed files with 16 additions and 0 deletions
  1. 12 0
      libc/stdio/printf.c
  2. 4 0
      libc/stdio/scanf.c

+ 12 - 0
libc/stdio/printf.c

@@ -1265,6 +1265,10 @@ int vsnprintf(char *__restrict buf, size_t size,
 	f.filedes = -2;				/* for debugging */
 	f.modeflags = (__FLAG_NARROW|__FLAG_WRITEONLY|__FLAG_WRITING);
 
+#ifdef __STDIO_THREADSAFE
+	__stdio_init_mutex(&f.lock);
+#endif
+
 	rv = vfprintf(&f, format, arg);
 	if (size) {
 		if (f.bufwpos == f.bufend) {
@@ -1335,6 +1339,10 @@ int vsnprintf(char *__restrict buf, size_t size,
 	f.filedes = -1;				/* For debugging. */
 	f.modeflags = (__FLAG_NARROW|__FLAG_WRITEONLY|__FLAG_WRITING);
 
+#ifdef __STDIO_THREADSAFE
+	__stdio_init_mutex(&f.lock);
+#endif
+
 	rv = vfprintf(&f, format, arg);
 
 	return rv;
@@ -1373,6 +1381,10 @@ int vdprintf(int filedes, const char * __restrict format, va_list arg)
 	f.filedes = filedes;
 	f.modeflags = (__FLAG_NARROW|__FLAG_WRITEONLY|__FLAG_WRITING);
 
+#ifdef __STDIO_THREADSAFE
+	__stdio_init_mutex(&f.lock);
+#endif
+
 	rv = vfprintf(&f, format, arg);
 
 	return fflush(&f) ? -1 : rv;

+ 4 - 0
libc/stdio/scanf.c

@@ -127,6 +127,10 @@ int vsscanf(__const char *sp, __const char *fmt, va_list ap)
 	string->bufstart = string->bufrpos = (unsigned char *) ((void *) sp);
 	string->bufgetc = (char *) ((unsigned) -1);
 
+#ifdef __STDIO_THREADSAFE
+	__stdio_init_mutex(&string->lock);
+#endif
+
 	return vfscanf(string, fmt, ap);
 }
 #else  /* __STDIO_BUFFERS */