diff --git a/TSRM/tsrm_win32.c b/TSRM/tsrm_win32.c index 81278d5ab4bd4..1f3f2d9644849 100644 --- a/TSRM/tsrm_win32.c +++ b/TSRM/tsrm_win32.c @@ -656,8 +656,13 @@ TSRM_API int shmget(key_t key, size_t size, int flags) } shm->segment = shm_handle; shm->descriptor = MapViewOfFileEx(shm->segment, FILE_MAP_ALL_ACCESS, 0, 0, 0, NULL); + if (shm->descriptor == NULL) { + SET_ERRNO_FROM_WIN32_CODE(GetLastError()); + CloseHandle(shm->segment); + return -1; + } - if (NULL != shm->descriptor && created) { + if (created) { shm->descriptor->shm_perm.key = key; shm->descriptor->shm_segsz = size; shm->descriptor->shm_ctime = time(NULL); @@ -671,7 +676,7 @@ TSRM_API int shmget(key_t key, size_t size, int flags) shm->descriptor->shm_perm.mode = shm->descriptor->shm_perm.seq = 0; } - if (NULL != shm->descriptor && (shm->descriptor->shm_perm.key != key || size > shm->descriptor->shm_segsz)) { + if (shm->descriptor->shm_perm.key != key || size > shm->descriptor->shm_segsz) { if (NULL != shm->segment) { CloseHandle(shm->segment); }