fix logic error in fread
[musl] / src / stdio / __lockfile.c
index 93c9486..66a4d26 100644 (file)
@@ -3,7 +3,7 @@
 
 void __lockfile(FILE *f)
 {
-       int spins=100000;
+       int spins=10000;
        int tid;
 
        if (f->lock < 0) return;
@@ -13,8 +13,8 @@ void __lockfile(FILE *f)
                f->lockcount++;
                return;
        }
-       while (f->lock || a_cas(&f->lock, 0, tid))
+       while (a_cas(&f->lock, 0, tid))
                if (spins) spins--, a_spin();
-               else syscall(SYS_sched_yield);
+               else __syscall(SYS_sched_yield);
        f->lockcount = 1;
 }