mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Use better fix for preventing too early freeing of interned strings
Works also with opcache now - just prevent zend_interned_strings_restore completely - zend_interned_strings_dtor will take care as phpdbg only ever uses one single request cycle per module cycle
This commit is contained in:
parent
b2d53e47ed
commit
c9d3b9fb47
2 changed files with 5 additions and 12 deletions
|
@ -797,13 +797,17 @@ static zend_module_entry sapi_phpdbg_module_entry = {
|
|||
STANDARD_MODULE_PROPERTIES
|
||||
};
|
||||
|
||||
static void phpdbg_interned_strings_nothing(void) { }
|
||||
|
||||
static inline int php_sapi_phpdbg_module_startup(sapi_module_struct *module) /* {{{ */
|
||||
{
|
||||
if (php_module_startup(module, &sapi_phpdbg_module_entry, 1) == FAILURE) {
|
||||
return FAILURE;
|
||||
}
|
||||
/* prevent zend_interned_strings_restore from invalidating our string pointers too early (in phpdbg allocated memory only gets freed after module shutdown) */
|
||||
zend_interned_strings_restore = phpdbg_interned_strings_nothing;
|
||||
|
||||
phpdbg_booted=1;
|
||||
phpdbg_booted = 1;
|
||||
|
||||
return SUCCESS;
|
||||
} /* }}} */
|
||||
|
|
|
@ -317,17 +317,6 @@ zend_op_array *phpdbg_init_compile_file(zend_file_handle *file, int type) {
|
|||
dataptr = zend_hash_str_find_ptr(&PHPDBG_G(file_sources), filename, strlen(filename));
|
||||
ZEND_ASSERT(dataptr != NULL);
|
||||
|
||||
if (op_array->vars) {
|
||||
int i;
|
||||
/* un-intern these strings to prevent zend_interned_strings_restore from invalidating our string pointers too early (in phpdbg allocated memory only gets freed after module shutdown) */
|
||||
for (i = 0; i < op_array->last_var; i++) {
|
||||
zend_string **s = op_array->vars + i;
|
||||
if (ZSTR_IS_INTERNED(*s)) {
|
||||
*s = zend_string_init(ZSTR_VAL(*s), ZSTR_LEN(*s), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dataptr->op_array = *op_array;
|
||||
if (dataptr->op_array.refcount) {
|
||||
++*dataptr->op_array.refcount;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue