]> granicus.if.org Git - php/commitdiff
Fix invalid zend_string_frees in reflection
authorNikita Popov <nikic@php.net>
Sun, 12 Oct 2014 17:01:45 +0000 (19:01 +0200)
committerNikita Popov <nikic@php.net>
Sun, 12 Oct 2014 18:55:51 +0000 (20:55 +0200)
zend_lookup_class can share the name

ext/reflection/php_reflection.c

index 7291d64213429fb3dbc76c89edd07c0b69042d72..57e11945c1f809a9791b4e347703ad63aa727054 100644 (file)
@@ -2402,7 +2402,7 @@ ZEND_METHOD(reflection_parameter, getClass)
                } else {
                        zend_string *name = zend_string_init(param->arg_info->class_name, param->arg_info->class_name_len, 0);
                        ce = zend_lookup_class(name TSRMLS_CC);
-                       zend_string_free(name);
+                       zend_string_release(name);
                        if (!ce) {
                                zend_throw_exception_ex(reflection_exception_ptr, 0 TSRMLS_CC,
                                        "Class %s does not exist", param->arg_info->class_name);
@@ -3862,10 +3862,10 @@ ZEND_METHOD(reflection_class, getProperty)
                        if (!EG(exception)) {
                                zend_throw_exception_ex(reflection_exception_ptr, -1 TSRMLS_CC, "Class %s does not exist", classname->val);
                        }
-                       zend_string_free(classname);
+                       zend_string_release(classname);
                        return;
                }
-               zend_string_free(classname);
+               zend_string_release(classname);
 
                if (!instanceof_function(ce, ce2 TSRMLS_CC)) {
                        zend_throw_exception_ex(reflection_exception_ptr, -1 TSRMLS_CC, "Fully qualified property name %s::%s does not specify a base class of %s", ce2->name->val, str_name, ce->name->val);