correct locking in stdio functions that tried to be lock-free
[musl] / src / stdio / __fopen_rb_ca.c
index 4ba50d6..a1b1b3b 100644 (file)
@@ -4,7 +4,7 @@ FILE *__fopen_rb_ca(const char *filename, FILE *f, unsigned char *buf, size_t le
 {
        memset(f, 0, sizeof *f);
 
-       f->fd = syscall(SYS_open, filename, O_RDONLY|O_LARGEFILE, 0);
+       f->fd = syscall(SYS_open, filename, O_RDONLY|O_LARGEFILE|O_CLOEXEC, 0);
        if (f->fd < 0) return 0;
 
        f->flags = F_NOWR | F_PERM;
@@ -13,6 +13,7 @@ FILE *__fopen_rb_ca(const char *filename, FILE *f, unsigned char *buf, size_t le
        f->read = __stdio_read;
        f->seek = __stdio_seek;
        f->close = __stdio_close;
+       f->lock = -1;
 
        return f;
 }