- if (!(name = mapname(name, buf))) return -1;
- return open(name, flag|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK, mode);
+ if (!(name = __shm_mapname(name, buf))) return -1;
+ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+ int fd = open(name, flag|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK, mode);
+ pthread_setcancelstate(cs, 0);
+ return fd;