]> granicus.if.org Git - php/commitdiff
Made code opcode-cache friendly. (It is disallowed to change code during execution)
authorDmitry Stogov <dmitry@php.net>
Mon, 18 Feb 2008 14:30:25 +0000 (14:30 +0000)
committerDmitry Stogov <dmitry@php.net>
Mon, 18 Feb 2008 14:30:25 +0000 (14:30 +0000)
ext/reflection/php_reflection.c

index b592d3f870310a7efc83800887c5cb23da533b75..d6ec7060f2bdbb62c0a94a0768b5798296548caf 100644 (file)
@@ -2144,7 +2144,6 @@ ZEND_METHOD(reflection_parameter, getDefaultValue)
        reflection_object *intern;
        parameter_reference *param;
        zend_op *precv;
-       zval *zv, zv_copy;
 
        METHOD_NOTSTATIC_NUMPARAMS(reflection_parameter_ptr, 0);
        GET_REFLECTION_OBJECT_PTR(param);
@@ -2164,10 +2163,12 @@ ZEND_METHOD(reflection_parameter, getDefaultValue)
                return;
        }
 
-       zv_copy = precv->op2.u.constant;
-       zv = &zv_copy;
-       zval_update_constant_ex(&zv, (void*)0, param->fptr->common.scope TSRMLS_CC);
-       RETURN_ZVAL(zv, 1, 1);
+       *return_value = precv->op2.u.constant;
+       INIT_PZVAL(return_value);
+       if (Z_TYPE_P(return_value) != IS_CONSTANT) {
+               zval_copy_ctor(return_value);
+       }
+       zval_update_constant_ex(&return_value, (void*)0, param->fptr->common.scope TSRMLS_CC);
 }
 /* }}} */