X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fthread%2Fsem_open.c;h=de8555c5a6869ceda20c956cc6c8d1ea8470a138;hb=1ef37aa00ea830dfda76e04e3d941cafa74d8b76;hp=9a95d257172096f6bd933005adb1299bbecf00c9;hpb=7c20a11801fd56cbadac5a6e88ddddf8656ac1bc;p=musl diff --git a/src/thread/sem_open.c b/src/thread/sem_open.c index 9a95d257..de8555c5 100644 --- a/src/thread/sem_open.c +++ b/src/thread/sem_open.c @@ -11,16 +11,14 @@ #include #include #include -#include "libc.h" - -char *__shm_mapname(const char *, char *); +#include "lock.h" static struct { ino_t ino; sem_t *sem; int refcnt; } *semtab; -static int lock[2]; +static volatile int lock[1]; #define FLAGS (O_RDWR|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK) @@ -126,6 +124,7 @@ sem_t *sem_open(const char *name, int flags, ...) e = link(tmp, name) ? errno : 0; unlink(tmp); if (!e) break; + munmap(map, sizeof(sem_t)); /* Failure is only fatal when doing an exclusive open; * otherwise, next iteration will try to open the * existing file. */