summaryrefslogtreecommitdiff
path: root/ext/reflection/php_reflection.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/reflection/php_reflection.c')
-rw-r--r--ext/reflection/php_reflection.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 17d9d39fdb..b077f7084d 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -2151,7 +2151,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);
@@ -2171,10 +2170,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);
}
/* }}} */