fix bug in dladdr that prevented resolving addresses in the PLT
[oweals/musl.git] / src / stdio / flockfile.c
index 0d4c92c24d9de3793f28870b60020b8bd5001d99..a196c1efe0af11663f5e0537a0de1db02c3982ef 100644 (file)
@@ -3,6 +3,8 @@
 
 void flockfile(FILE *f)
 {
-       if (!libc.threaded) pthread_self();
-       __lockfile(f);
+       while (ftrylockfile(f)) {
+               int owner = f->lock;
+               if (owner) __wait(&f->lock, &f->waiters, owner, 1);
+       }
 }