]> 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:31:01 +0000 (14:31 +0000)
committerDmitry Stogov <dmitry@php.net>
Mon, 18 Feb 2008 14:31:01 +0000 (14:31 +0000)
ext/reflection/php_reflection.c

index 1b352cc9ae7b631c152b626ecac7f1a25c4ffff0..afb7a565def56390b8c42ac68eb5075813ff36d5 100644 (file)
@@ -2178,7 +2178,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);
@@ -2198,10 +2197,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);
 }
 /* }}} */