summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-10-31 18:51:35 +0300
committerDmitry Stogov <dmitry@zend.com>2017-10-31 18:51:35 +0300
commitbbfd0df9d3903f1a5faa301e553de92372d70f03 (patch)
tree597ea731ee50ebe268d67e59425c2ef333831365 /ext
parent5b044aacbeb481a840da9f9733dacfc3e0bf5cb7 (diff)
downloadphp-git-bbfd0df9d3903f1a5faa301e553de92372d70f03.tar.gz
Use interned strings for persistent stream wrappers and filters
Diffstat (limited to 'ext')
-rw-r--r--ext/opcache/ZendAccelerator.c15
-rw-r--r--ext/standard/user_filters.c2
2 files changed, 16 insertions, 1 deletions
diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c
index 260ecc9d2d..178f96f67e 100644
--- a/ext/opcache/ZendAccelerator.c
+++ b/ext/opcache/ZendAccelerator.c
@@ -549,6 +549,7 @@ static void accel_copy_permanent_strings(zend_new_interned_string_func_t new_int
{
uint32_t j;
Bucket *p, *q;
+ HashTable *ht;
/* empty string */
zend_empty_string = new_interned_string(zend_empty_string);
@@ -680,6 +681,20 @@ static void accel_copy_permanent_strings(zend_new_interned_string_func_t new_int
entry->orig_value = new_interned_string(entry->orig_value);
}
} ZEND_HASH_FOREACH_END();
+
+ ht = php_get_stream_filters_hash_global();
+ ZEND_HASH_FOREACH_BUCKET(ht, p) {
+ if (p->key) {
+ p->key = new_interned_string(p->key);
+ }
+ } ZEND_HASH_FOREACH_END();
+
+ ht = php_stream_get_url_stream_wrappers_hash_global();
+ ZEND_HASH_FOREACH_BUCKET(ht, p) {
+ if (p->key) {
+ p->key = new_interned_string(p->key);
+ }
+ } ZEND_HASH_FOREACH_END();
}
static zend_string *accel_replace_string_by_shm_permanent(zend_string *str)
diff --git a/ext/standard/user_filters.c b/ext/standard/user_filters.c
index 4d9f4f5fbb..1f39464a97 100644
--- a/ext/standard/user_filters.c
+++ b/ext/standard/user_filters.c
@@ -587,7 +587,7 @@ PHP_FUNCTION(stream_filter_register)
fdat->classname = zend_string_copy(classname);
if (zend_hash_add_ptr(BG(user_filter_map), filtername, fdat) != NULL &&
- php_stream_filter_register_factory_volatile(ZSTR_VAL(filtername), &user_filter_factory) == SUCCESS) {
+ php_stream_filter_register_factory_volatile(filtername, &user_filter_factory) == SUCCESS) {
RETVAL_TRUE;
} else {
zend_string_release(classname);