summaryrefslogtreecommitdiff
path: root/ext/reflection/php_reflection.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-07-24 01:54:21 +0400
committerDmitry Stogov <dmitry@zend.com>2014-07-24 01:54:21 +0400
commit7c6477ce37974f5d41cbbf245c27a2d0e6df1f6a (patch)
treeeb2c417726ae631e60fd04a4ed23719cb2358c2c /ext/reflection/php_reflection.c
parent9583a14e7586a78b3756996e67c9590989a691f2 (diff)
parent8fb7c4dc08c9d4eeb891be47b63b5b717bb61c45 (diff)
downloadphp-git-7c6477ce37974f5d41cbbf245c27a2d0e6df1f6a.tar.gz
Merge branch 'master' into phpng
* master: Removed second zval_copy_ctor() Fixed crash on self-referencing constant expression (part of a constant AST) Fixed support for constant arrays in context of "const" statement (Zend/tests/constant_expressions_arrays.phpt failed when opcache.protect_memort was set) Conflicts: Zend/zend_ast.c Zend/zend_vm_def.h Zend/zend_vm_execute.h ext/reflection/php_reflection.c
Diffstat (limited to 'ext/reflection/php_reflection.c')
-rw-r--r--ext/reflection/php_reflection.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index 7247542951..f2d3059c3d 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -722,9 +722,14 @@ static void _parameter_string(string *str, zend_function *fptr, struct _zend_arg
zend_op *precv = _get_recv_op((zend_op_array*)fptr, offset);
if (precv && precv->opcode == ZEND_RECV_INIT && precv->op2_type != IS_UNUSED) {
zval zv;
+ zend_class_entry *old_scope;
+
string_write(str, " = ", sizeof(" = ")-1);
ZVAL_DUP(&zv, precv->op2.zv);
- zval_update_constant_ex(&zv, 1, fptr->common.scope TSRMLS_CC);
+ old_scope = EG(scope);
+ EG(scope) = fptr->common.scope;
+ zval_update_constant_ex(&zv, 1, NULL TSRMLS_CC);
+ EG(scope) = old_scope;
if (Z_TYPE(zv) == IS_TRUE) {
string_write(str, "true", sizeof("true")-1);
} else if (Z_TYPE(zv) == IS_FALSE) {
@@ -2578,7 +2583,11 @@ ZEND_METHOD(reflection_parameter, getDefaultValue)
ZVAL_COPY_VALUE(return_value, precv->op2.zv);
if (Z_CONSTANT_P(return_value)) {
- zval_update_constant_ex(return_value, 0, param->fptr->common.scope TSRMLS_CC);
+ zend_class_entry *old_scope = EG(scope);
+
+ EG(scope) = param->fptr->common.scope;
+ zval_update_constant_ex(return_value, 0, NULL TSRMLS_CC);
+ EG(scope) = old_scope;
} else {
zval_copy_ctor(return_value);
}