diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-07-24 01:54:21 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-07-24 01:54:21 +0400 |
commit | 7c6477ce37974f5d41cbbf245c27a2d0e6df1f6a (patch) | |
tree | eb2c417726ae631e60fd04a4ed23719cb2358c2c /ext/reflection/php_reflection.c | |
parent | 9583a14e7586a78b3756996e67c9590989a691f2 (diff) | |
parent | 8fb7c4dc08c9d4eeb891be47b63b5b717bb61c45 (diff) | |
download | php-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.c | 13 |
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); } |