Skip to content

Commit

Permalink
Fixed required SHM memeory size calculation for scripts when opcache.…
Browse files Browse the repository at this point in the history
…revalidate_path is set.
  • Loading branch information
dstogov committed Oct 18, 2017
1 parent d042d1d commit 7ff13ba
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 7 deletions.
4 changes: 2 additions & 2 deletions ext/opcache/ZendAccelerator.c
Original file line number Diff line number Diff line change
Expand Up @@ -1276,7 +1276,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__
Expand Down Expand Up @@ -1364,7 +1364,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__
Expand Down
2 changes: 1 addition & 1 deletion ext/opcache/zend_persist.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#define ZEND_PERSIST_H

int zend_accel_script_persistable(zend_persistent_script *script);
uint32_t zend_accel_script_persist_calc(zend_persistent_script *script, char *key, unsigned int key_length);
uint32_t 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 */
10 changes: 6 additions & 4 deletions ext/opcache/zend_persist_calc.c
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ static void zend_accel_persist_class_table_calc(HashTable *class_table)
zend_hash_persist_calc(class_table, zend_persist_class_entry_calc);
}

uint32_t zend_accel_script_persist_calc(zend_persistent_script *new_persistent_script, char *key, unsigned int key_length)
uint32_t 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;
Expand All @@ -403,12 +403,14 @@ uint32_t zend_accel_script_persist_calc(zend_persistent_script *new_persistent_s
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->script.filename);

Expand Down

0 comments on commit 7ff13ba

Please sign in to comment.