]> granicus.if.org Git - php/commitdiff
Use zend_string when storing incomplete class name
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 28 Aug 2020 08:01:46 +0000 (10:01 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 28 Aug 2020 08:01:46 +0000 (10:01 +0200)
No need to copy the string here...

ext/standard/incomplete_class.c
ext/standard/php_incomplete_class.h
ext/standard/var_unserializer.re

index 2c847fd4fe0f2a5dfb8d0ec1ed8823463383609b..1824d52f44d2ff79a5a829e9ca16499cde947df4 100644 (file)
@@ -142,12 +142,11 @@ PHPAPI zend_string *php_lookup_class_name(zend_object *object)
 /* }}} */
 
 /* {{{ php_store_class_name */
-PHPAPI void php_store_class_name(zval *object, const char *name, size_t len)
+PHPAPI void php_store_class_name(zval *object, zend_string *name)
 {
        zval val;
 
-
-       ZVAL_STRINGL(&val, name, len);
+       ZVAL_STR_COPY(&val, name);
        zend_hash_str_update(Z_OBJPROP_P(object), MAGIC_MEMBER, sizeof(MAGIC_MEMBER)-1, &val);
 }
 /* }}} */
index c2cda0d6f052950776ab92f488f991f427991d71..f36fd43cfcebda8010cfd1b490ab4c206ca9bef0 100644 (file)
@@ -51,7 +51,7 @@ extern "C" {
 
 PHPAPI void php_register_incomplete_class(void);
 PHPAPI zend_string *php_lookup_class_name(zend_object *object);
-PHPAPI void  php_store_class_name(zval *object, const char *name, size_t len);
+PHPAPI void php_store_class_name(zval *object, zend_string *name);
 
 #ifdef __cplusplus
 };
index e7a48d4d8e0d3a0d74f9660f840077b12c4d2a4c..928cf29392396590f4d407e60c38f0b9c065d9b1 100644 (file)
@@ -1013,7 +1013,7 @@ use_double:
 }
 
 object ":" uiv ":" ["] {
-       size_t len, len2, len3, maxlen;
+       size_t len, len3, maxlen;
        zend_long elements;
        char *str;
        zend_string *class_name;
@@ -1031,7 +1031,7 @@ object ":" uiv ":" ["]    {
                custom_object = 1;
        }
 
-       len2 = len = parse_uiv(start + 2);
+       len = parse_uiv(start + 2);
        maxlen = max - YYCURSOR;
        if (maxlen < len || len == 0) {
                *p = start + 2;
@@ -1143,7 +1143,7 @@ object ":" uiv ":" ["]    {
                ret = object_custom(UNSERIALIZE_PASSTHRU, ce);
 
                if (ret && incomplete_class) {
-                       php_store_class_name(rval, ZSTR_VAL(class_name), len2);
+                       php_store_class_name(rval, class_name);
                }
                zend_string_release_ex(class_name, 0);
                return ret;
@@ -1181,7 +1181,7 @@ object ":" uiv ":" ["]    {
        }
 
        if (incomplete_class) {
-               php_store_class_name(rval, ZSTR_VAL(class_name), len2);
+               php_store_class_name(rval, class_name);
        }
        zend_string_release_ex(class_name, 0);