Skip to content

Commit 8b92113

Browse files
committed
add error handling for fixed Windows alloc
1 parent 0736b8a commit 8b92113

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

Zend/zend_alloc.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,15 @@ static void zend_mm_munmap(void *addr, size_t size)
437437
static void *zend_mm_mmap_fixed(void *addr, size_t size)
438438
{
439439
#ifdef _WIN32
440-
return VirtualAlloc(addr, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
440+
void *ptr = VirtualAlloc(addr, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
441+
442+
if (ptr == NULL) {
443+
#if ZEND_MM_ERROR
444+
stderr_last_error("VirtualAlloc() fixed failed");
445+
#endif
446+
return NULL;
447+
}
448+
return ptr;
441449
#else
442450
int flags = MAP_PRIVATE | MAP_ANON;
443451
#if defined(MAP_EXCL)
@@ -448,7 +456,7 @@ static void *zend_mm_mmap_fixed(void *addr, size_t size)
448456

449457
if (ptr == MAP_FAILED) {
450458
#if ZEND_MM_ERROR && !defined(MAP_EXCL)
451-
fprintf(stderr, "\nmmap() failed: [%d] %s\n", errno, strerror(errno));
459+
fprintf(stderr, "\nmmap() fixed failed: [%d] %s\n", errno, strerror(errno));
452460
#endif
453461
return NULL;
454462
} else if (ptr != addr) {

0 commit comments

Comments
 (0)