X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=inline;f=src%2Fmman%2Fshm_open.c;h=79784bd306e2dac347cea17af92b2b80c8ea1831;hb=3733c831f293b3bbfd0e51faec8ee71112c62c3e;hp=b23eac7fa1df901c42f091fd122e593941448b47;hpb=bf258341b71711461ce19891674d43c135827d0e;p=musl diff --git a/src/mman/shm_open.c b/src/mman/shm_open.c index b23eac7f..79784bd3 100644 --- a/src/mman/shm_open.c +++ b/src/mman/shm_open.c @@ -4,8 +4,7 @@ #include #include #include - -char *__strchrnul(const char *, int); +#include char *__shm_mapname(const char *name, char *buf) { @@ -27,9 +26,13 @@ char *__shm_mapname(const char *name, char *buf) int shm_open(const char *name, int flag, mode_t mode) { + int cs; char buf[NAME_MAX+10]; if (!(name = __shm_mapname(name, buf))) return -1; - return open(name, flag|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK, mode); + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + int fd = open(name, flag|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK, mode); + pthread_setcancelstate(cs, 0); + return fd; } int shm_unlink(const char *name)