summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2017-04-15 19:35:13 +0200
committerAnatol Belski <ab@php.net>2017-04-15 19:35:13 +0200
commit039ef0143bd730824ecf31290457c09826d3043f (patch)
tree406f062be4d8307e7613947cfd8d48a13d161581
parent5bd0baa89193c99e36a957f91e10977c3b3664b4 (diff)
parentca543ff01c9e182eadc344aec8746ba19187a2b1 (diff)
downloadphp-git-039ef0143bd730824ecf31290457c09826d3043f.tar.gz
Merge branch 'PHP-7.0' into PHP-7.1
* PHP-7.0: improve/fix error handling
-rw-r--r--ext/opcache/shared_alloc_win32.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/ext/opcache/shared_alloc_win32.c b/ext/opcache/shared_alloc_win32.c
index 0cf65cf90a..0c62d17525 100644
--- a/ext/opcache/shared_alloc_win32.c
+++ b/ext/opcache/shared_alloc_win32.c
@@ -144,8 +144,8 @@ static int zend_shared_alloc_reattach(size_t requested_size, char **error_in)
FILE *fp = fopen(mmap_base_file, "r");
MEMORY_BASIC_INFORMATION info;
- err = GetLastError();
if (!fp) {
+ err = GetLastError();
zend_win_error_message(ACCEL_LOG_WARNING, mmap_base_file, err);
zend_win_error_message(ACCEL_LOG_FATAL, "Unable to open base address file", err);
*error_in="fopen";
@@ -194,9 +194,9 @@ static int zend_shared_alloc_reattach(size_t requested_size, char **error_in)
}
mapping_base = MapViewOfFileEx(memfile, FILE_MAP_ALL_ACCESS, 0, 0, 0, wanted_mapping_base);
- err = GetLastError();
if (mapping_base == NULL) {
+ err = GetLastError();
if (err == ERROR_INVALID_ADDRESS) {
zend_win_error_message(ACCEL_LOG_FATAL, "Unable to reattach to base address", err);
return ALLOC_FAILURE;
@@ -210,7 +210,7 @@ static int zend_shared_alloc_reattach(size_t requested_size, char **error_in)
static int create_segments(size_t requested_size, zend_shared_segment ***shared_segments_p, int *shared_segments_count, char **error_in)
{
- int err, ret;
+ int err = 0, ret;
zend_shared_segment *shared_segment;
int map_retries = 0;
void *default_mapping_base_set[] = { 0, 0 };
@@ -232,14 +232,14 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
and we have to sleep some time (until the child releases the mapping object) and retry.*/
do {
memfile = OpenFileMapping(FILE_MAP_WRITE, 0, create_name_with_username(ACCEL_FILEMAP_NAME));
- err = GetLastError();
if (memfile == NULL) {
+ err = GetLastError();
break;
}
ret = zend_shared_alloc_reattach(requested_size, error_in);
- err = GetLastError();
if (ret == ALLOC_FAIL_MAPPING) {
+ err = GetLastError();
/* Mapping failed, wait for mapping object to get freed and retry */
CloseHandle(memfile);
memfile = NULL;
@@ -266,8 +266,9 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
*shared_segments_count = 1;
*shared_segments_p = (zend_shared_segment **) calloc(1, sizeof(zend_shared_segment)+sizeof(void *));
if (!*shared_segments_p) {
+ err = GetLastError();
zend_shared_alloc_unlock_win32();
- zend_win_error_message(ACCEL_LOG_FATAL, "calloc() failed", GetLastError());
+ zend_win_error_message(ACCEL_LOG_FATAL, "calloc() failed", err);
*error_in = "calloc";
return ALLOC_FAILURE;
}
@@ -276,8 +277,8 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
memfile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, requested_size,
create_name_with_username(ACCEL_FILEMAP_NAME));
- err = GetLastError();
if (memfile == NULL) {
+ err = GetLastError();
zend_shared_alloc_unlock_win32();
zend_win_error_message(ACCEL_LOG_FATAL, "Unable to create file mapping", err);
*error_in = "CreateFileMapping";
@@ -311,8 +312,8 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
wanted_mapping_base++;
} while (!mapping_base);
- err = GetLastError();
if (mapping_base == NULL) {
+ err = GetLastError();
zend_shared_alloc_unlock_win32();
zend_win_error_message(ACCEL_LOG_FATAL, "Unable to create view for file mapping", err);
*error_in = "MapViewOfFile";
@@ -320,8 +321,8 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_
} else {
char *mmap_base_file = get_mmap_base_file();
FILE *fp = fopen(mmap_base_file, "w");
- err = GetLastError();
if (!fp) {
+ err = GetLastError();
zend_shared_alloc_unlock_win32();
zend_win_error_message(ACCEL_LOG_WARNING, mmap_base_file, err);
zend_win_error_message(ACCEL_LOG_FATAL, "Unable to write base address", err);