summaryrefslogtreecommitdiffstats
path: root/main/uclibc/uclibc-linuxthreads-init-stdio.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/uclibc/uclibc-linuxthreads-init-stdio.patch')
-rw-r--r--main/uclibc/uclibc-linuxthreads-init-stdio.patch21
1 files changed, 21 insertions, 0 deletions
diff --git a/main/uclibc/uclibc-linuxthreads-init-stdio.patch b/main/uclibc/uclibc-linuxthreads-init-stdio.patch
new file mode 100644
index 00000000..aa5ef646
--- /dev/null
+++ b/main/uclibc/uclibc-linuxthreads-init-stdio.patch
@@ -0,0 +1,21 @@
+diff --git a/libpthread/linuxthreads/pthread.c b/libpthread/linuxthreads/pthread.c
+index 6ae9a10..151e039 100644
+--- a/libpthread/linuxthreads/pthread.c
++++ b/libpthread/linuxthreads/pthread.c
+@@ -409,6 +409,16 @@ cannot allocate TLS data structures for initial thread\n";
+ #endif
+
+ __libc_multiple_threads_ptr = __libc_pthread_init (ptr_pthread_functions);
++ /* uClibc-specific stdio initialization for threads. */
++ {
++ FILE *fp;
++ _stdio_user_locking = 0; /* 2 if threading not initialized */
++ for (fp = _stdio_openlist; fp != NULL; fp = fp->__nextopen) {
++ if (fp->__user_locking != 1) {
++ fp->__user_locking = 0;
++ }
++ }
++ }
+ }
+
+