summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2015-10-20 20:05:44 +0200
committerAnatol Belski <ab@php.net>2015-10-20 20:05:44 +0200
commitccc95bf9dfc6b66447487ed1e2914c639967ecb1 (patch)
tree71fa5c56f4ba83ef559f90d9108eee1fe06b773a
parentd5f76caf6cf334d1bb4ca69662065b3bb34d76c5 (diff)
downloadphp-git-ccc95bf9dfc6b66447487ed1e2914c639967ecb1.tar.gz
backport 262160e and 2d55e8c into 5.6
-rw-r--r--ext/opcache/shared_alloc_win32.c9
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();