From d82805f097564558d94e3062e87b17d6ccae893f Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 18 Oct 2017 16:02:56 +0200 Subject: [PATCH] Backport 7ff13badda58b966ff8fbcc61add48bb5b14117b into 7.0+ --- ext/opcache/ZendAccelerator.c | 4 ++-- ext/opcache/zend_persist.h | 2 +- ext/opcache/zend_persist_calc.c | 10 ++++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 4c57e5c91e..52276010af 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -1221,7 +1221,7 @@ static zend_persistent_script *cache_script_in_file_cache(zend_persistent_script zend_shared_alloc_init_xlat_table(); /* Calculate the required memory size */ - memory_used = zend_accel_script_persist_calc(new_persistent_script, NULL, 0); + memory_used = zend_accel_script_persist_calc(new_persistent_script, NULL, 0, 0); /* Allocate memory block */ #ifdef __SSE2__ @@ -1309,7 +1309,7 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr zend_shared_alloc_init_xlat_table(); /* Calculate the required memory size */ - memory_used = zend_accel_script_persist_calc(new_persistent_script, key, key_length); + memory_used = zend_accel_script_persist_calc(new_persistent_script, key, key_length, 1); /* Allocate shared memory */ #ifdef __SSE2__ diff --git a/ext/opcache/zend_persist.h b/ext/opcache/zend_persist.h index cb98cee187..fc35eac5c8 100644 --- a/ext/opcache/zend_persist.h +++ b/ext/opcache/zend_persist.h @@ -23,7 +23,7 @@ #define ZEND_PERSIST_H int zend_accel_script_persistable(zend_persistent_script *script); -uint zend_accel_script_persist_calc(zend_persistent_script *script, char *key, unsigned int key_length); +uint zend_accel_script_persist_calc(zend_persistent_script *script, char *key, unsigned int key_length, int for_shm); zend_persistent_script *zend_accel_script_persist(zend_persistent_script *script, char **key, unsigned int key_length); #endif /* ZEND_PERSIST_H */ diff --git a/ext/opcache/zend_persist_calc.c b/ext/opcache/zend_persist_calc.c index 369c57cf84..fda2aeba2a 100644 --- a/ext/opcache/zend_persist_calc.c +++ b/ext/opcache/zend_persist_calc.c @@ -381,7 +381,7 @@ static void zend_accel_persist_class_table_calc(HashTable *class_table) zend_hash_persist_calc(class_table, zend_persist_class_entry_calc); } -uint zend_accel_script_persist_calc(zend_persistent_script *new_persistent_script, char *key, unsigned int key_length) +uint zend_accel_script_persist_calc(zend_persistent_script *new_persistent_script, char *key, unsigned int key_length, int for_shm) { new_persistent_script->mem = NULL; new_persistent_script->size = 0; @@ -390,12 +390,14 @@ uint zend_accel_script_persist_calc(zend_persistent_script *new_persistent_scrip new_persistent_script->corrupted = 0; ZCG(current_persistent_script) = new_persistent_script; + if (!for_shm) { + /* script is not going to be saved in SHM */ + new_persistent_script->corrupted = 1; + } + ADD_DUP_SIZE(new_persistent_script, sizeof(zend_persistent_script)); if (key) { ADD_DUP_SIZE(key, key_length + 1); - } else { - /* script is not going to be saved in SHM */ - new_persistent_script->corrupted = 1; } ADD_STRING(new_persistent_script->full_path); -- 2.40.0