diff options
author | Anatol Belski <ab@php.net> | 2015-10-20 20:05:44 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2015-10-20 20:05:44 +0200 |
commit | ccc95bf9dfc6b66447487ed1e2914c639967ecb1 (patch) | |
tree | 71fa5c56f4ba83ef559f90d9108eee1fe06b773a | |
parent | d5f76caf6cf334d1bb4ca69662065b3bb34d76c5 (diff) | |
download | php-git-ccc95bf9dfc6b66447487ed1e2914c639967ecb1.tar.gz |
backport 262160e and 2d55e8c into 5.6
-rw-r--r-- | ext/opcache/shared_alloc_win32.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/ext/opcache/shared_alloc_win32.c b/ext/opcache/shared_alloc_win32.c index cf4bce005d..fd5d334269 100644 --- a/ext/opcache/shared_alloc_win32.c +++ b/ext/opcache/shared_alloc_win32.c @@ -205,14 +205,19 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_ err = GetLastError(); if (ret == ALLOC_FAIL_MAPPING) { /* Mapping failed, wait for mapping object to get freed and retry */ - CloseHandle(memfile); + CloseHandle(memfile); memfile = NULL; + if (++map_retries >= MAX_MAP_RETRIES) { + break; + } + zend_shared_alloc_unlock_win32(); Sleep(1000 * (map_retries + 1)); + zend_shared_alloc_lock_win32(); } else { zend_shared_alloc_unlock_win32(); return ret; } - } while (++map_retries < MAX_MAP_RETRIES); + } while (1); if (map_retries == MAX_MAP_RETRIES) { zend_shared_alloc_unlock_win32(); |