Z_PTR_P(zv) = new_entry;
memcpy(new_entry, old_entry, sizeof(zend_ini_entry));
if (old_entry->name) {
- new_entry->name = zend_string_init(ZSTR_VAL(old_entry->name), ZSTR_LEN(old_entry->name), 1);
+ new_entry->name = zend_string_dup(old_entry->name, 1);
}
if (old_entry->value) {
- new_entry->value = zend_string_init(ZSTR_VAL(old_entry->value), ZSTR_LEN(old_entry->value), 1);
+ new_entry->value = zend_string_dup(old_entry->value, 1);
}
if (old_entry->orig_value) {
- new_entry->orig_value = zend_string_init(ZSTR_VAL(old_entry->orig_value), ZSTR_LEN(old_entry->orig_value), 1);
+ new_entry->orig_value = zend_string_dup(old_entry->orig_value, 1);
}
}
/* }}} */
while (ini_entry->name) {
p = pemalloc(sizeof(zend_ini_entry), 1);
- p->name = zend_string_init(ini_entry->name, ini_entry->name_length, 1);
+ p->name = zend_string_init_interned(ini_entry->name, ini_entry->name_length, 1);
p->on_modify = ini_entry->on_modify;
p->mh_arg1 = ini_entry->mh_arg1;
p->mh_arg2 = ini_entry->mh_arg2;
if (((default_value = zend_get_configuration_directive(p->name)) != NULL) &&
(!p->on_modify || p->on_modify(p, Z_STR_P(default_value), p->mh_arg1, p->mh_arg2, p->mh_arg3, ZEND_INI_STAGE_STARTUP) == SUCCESS)) {
- p->value = zend_string_copy(Z_STR_P(default_value));
+ p->value = zend_new_interned_string(zend_string_copy(Z_STR_P(default_value)));
} else {
p->value = ini_entry->value ?
- zend_string_init(ini_entry->value, ini_entry->value_length, 1) : NULL;
+ zend_string_init_interned(ini_entry->value, ini_entry->value_length, 1) : NULL;
if (p->on_modify) {
p->on_modify(p, p->value, p->mh_arg1, p->mh_arg2, p->mh_arg3, ZEND_INI_STAGE_STARTUP);
p->key = new_interned_string(p->key);
}
} ZEND_HASH_FOREACH_END();
+
+ ZEND_HASH_FOREACH_BUCKET(EG(ini_directives), p) {
+ zend_ini_entry *entry = (zend_ini_entry*)Z_PTR(p->val);
+
+ if (p->key) {
+ p->key = new_interned_string(p->key);
+ }
+ if (entry->name) {
+ entry->name = new_interned_string(entry->name);
+ }
+ if (entry->value) {
+ entry->value = new_interned_string(entry->value);
+ }
+ if (entry->orig_value) {
+ entry->orig_value = new_interned_string(entry->orig_value);
+ }
+ } ZEND_HASH_FOREACH_END();
}
static zend_string *accel_replace_string_by_shm_permanent(zend_string *str)
return FAILURE;
}
- ini_entry->value = zend_string_init(new_new_value, 1, 1);
+ ini_entry->value = zend_string_init_interned(new_new_value, 1, 1);
}
if (UNEXPECTED(memsize > ZEND_ULONG_MAX / (1024 * 1024))) {
*p = ZEND_ULONG_MAX;
sizeof("opcache.max_accelerated_files")-1)) == NULL) {
return FAILURE;
}
- ini_entry->value = zend_string_init(new_new_value, strlen(new_new_value), 1);
+ ini_entry->value = zend_string_init_interned(new_new_value, strlen(new_new_value), 1);
}
*p = size;
return SUCCESS;
sizeof("opcache.max_wasted_percentage")-1)) == NULL) {
return FAILURE;
}
- ini_entry->value = zend_string_init(new_new_value, strlen(new_new_value), 1);
+ ini_entry->value = zend_string_init_interned(new_new_value, strlen(new_new_value), 1);
}
*p = (double)percentage / 100.0;
return SUCCESS;