@@ -419,7 +419,17 @@ stderr_last_error(char *msg)
419
419
static void * zend_mm_mmap_fixed (void * addr , size_t size )
420
420
{
421
421
#ifdef _WIN32
422
- return VirtualAlloc (addr , size , MEM_COMMIT | MEM_RESERVE , PAGE_READWRITE );
422
+ void * ptr = VirtualAlloc (addr , size , MEM_COMMIT | MEM_RESERVE , PAGE_READWRITE );
423
+ if (ptr == NULL ) {
424
+ #if ZEND_MM_ERROR
425
+ stderr_last_error ("VirtualAlloc(addr) failed" );
426
+ #endif
427
+ return NULL ;
428
+ } else if (ptr != addr ) {
429
+ zend_mm_munmap (ptr , size );
430
+ return NULL ;
431
+ }
432
+ return ptr ;
423
433
#else
424
434
int flags = MAP_PRIVATE | MAP_ANON ;
425
435
#if defined(MAP_EXCL )
@@ -434,11 +444,7 @@ static void *zend_mm_mmap_fixed(void *addr, size_t size)
434
444
#endif
435
445
return NULL ;
436
446
} else if (ptr != addr ) {
437
- if (munmap (ptr , size ) != 0 ) {
438
- #if ZEND_MM_ERROR
439
- fprintf (stderr , "\nmunmap() failed: [%d] %s\n" , errno , strerror (errno ));
440
- #endif
441
- }
447
+ zend_mm_munmap (ptr , size );
442
448
return NULL ;
443
449
}
444
450
return ptr ;
@@ -450,10 +456,9 @@ static void *zend_mm_mmap(size_t size)
450
456
{
451
457
#ifdef _WIN32
452
458
void * ptr = VirtualAlloc (NULL , size , MEM_COMMIT | MEM_RESERVE , PAGE_READWRITE );
453
-
454
459
if (ptr == NULL ) {
455
460
#if ZEND_MM_ERROR
456
- stderr_last_error ("VirtualAlloc() failed" );
461
+ stderr_last_error ("VirtualAlloc(NULL ) failed" );
457
462
#endif
458
463
return NULL ;
459
464
}
@@ -1846,11 +1851,7 @@ static zend_mm_heap *zend_mm_init(void)
1846
1851
1847
1852
if (UNEXPECTED (chunk == NULL )) {
1848
1853
#if ZEND_MM_ERROR
1849
- #ifdef _WIN32
1850
1854
stderr_last_error ("Can't initialize heap" );
1851
- #else
1852
- fprintf (stderr , "\nCan't initialize heap: [%d] %s\n" , errno , strerror (errno ));
1853
- #endif
1854
1855
#endif
1855
1856
return NULL ;
1856
1857
}
@@ -2978,11 +2979,7 @@ ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_handlers *handlers, void
2978
2979
chunk = (zend_mm_chunk * )handlers -> chunk_alloc (& tmp_storage , ZEND_MM_CHUNK_SIZE , ZEND_MM_CHUNK_SIZE );
2979
2980
if (UNEXPECTED (chunk == NULL )) {
2980
2981
#if ZEND_MM_ERROR
2981
- #ifdef _WIN32
2982
2982
stderr_last_error ("Can't initialize heap" );
2983
- #else
2984
- fprintf (stderr , "\nCan't initialize heap: [%d] %s\n" , errno , strerror (errno ));
2985
- #endif
2986
2983
#endif
2987
2984
return NULL ;
2988
2985
}
@@ -3025,11 +3022,7 @@ ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_handlers *handlers, void
3025
3022
if (!storage ) {
3026
3023
handlers -> chunk_free (& tmp_storage , chunk , ZEND_MM_CHUNK_SIZE );
3027
3024
#if ZEND_MM_ERROR
3028
- #ifdef _WIN32
3029
3025
stderr_last_error ("Can't initialize heap" );
3030
- #else
3031
- fprintf (stderr , "\nCan't initialize heap: [%d] %s\n" , errno , strerror (errno ));
3032
- #endif
3033
3026
#endif
3034
3027
return NULL ;
3035
3028
}
0 commit comments