]> granicus.if.org Git - php/commitdiff
Intern string constant values
authorDmitry Stogov <dmitry@zend.com>
Thu, 7 Dec 2017 09:27:16 +0000 (12:27 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 7 Dec 2017 09:27:16 +0000 (12:27 +0300)
Zend/zend_constants.c
ext/opcache/ZendAccelerator.c

index 1eda6daefd5e1486b4e1840b7d57cd3e4d642432..3fa547bcf0f5b736a9ba1df60f923d9d06d55813 100644 (file)
@@ -187,7 +187,7 @@ ZEND_API void zend_register_stringl_constant(const char *name, size_t name_len,
 {
        zend_constant c;
 
-       ZVAL_NEW_STR(&c.value, zend_string_init(strval, strlen, flags & CONST_PERSISTENT));
+       ZVAL_STR(&c.value, zend_string_init_interned(strval, strlen, flags & CONST_PERSISTENT));
        c.flags = flags;
        c.name = zend_string_init_interned(name, name_len, flags & CONST_PERSISTENT);
        c.module_number = module_number;
index 9094f1a5dbdfe5cb463fbf66270426bd8993be1e..6f42db9d291329f36fda9d21f3a0037e14c5817f 100644 (file)
@@ -640,6 +640,9 @@ static void accel_copy_permanent_strings(zend_new_interned_string_func_t new_int
                if (c->name) {
                        c->name = new_interned_string(c->name);
                }
+               if (Z_TYPE(c->value) == IS_STRING) {
+                       ZVAL_STR(&c->value, new_interned_string(Z_STR(c->value)));
+               }
        } ZEND_HASH_FOREACH_END();
 
        /* auto globals hash keys and names */