diff options
Diffstat (limited to 'ext/reflection')
| -rw-r--r-- | ext/reflection/php_reflection.c | 4 | ||||
| -rw-r--r-- | ext/reflection/php_reflection.h | 2 | ||||
| -rw-r--r-- | ext/reflection/tests/bug63614.phpt | 41 |
3 files changed, 44 insertions, 3 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 53b2389d6..25ecbad68 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2012 The PHP Group | + | Copyright (c) 1997-2013 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -1884,7 +1884,7 @@ ZEND_METHOD(reflection_function, getStaticVariables) /* Return an empty array in case no static variables exist */ array_init(return_value); if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.static_variables != NULL) { - zend_hash_apply_with_argument(fptr->op_array.static_variables, (apply_func_arg_t) zval_update_constant, (void*)1 TSRMLS_CC); + zend_hash_apply_with_argument(fptr->op_array.static_variables, (apply_func_arg_t) zval_update_constant_inline_change, fptr->common.scope TSRMLS_CC); zend_hash_copy(Z_ARRVAL_P(return_value), fptr->op_array.static_variables, (copy_ctor_func_t) zval_add_ref, (void *) &tmp_copy, sizeof(zval *)); } } diff --git a/ext/reflection/php_reflection.h b/ext/reflection/php_reflection.h index 6f288546f..48470f4f6 100644 --- a/ext/reflection/php_reflection.h +++ b/ext/reflection/php_reflection.h @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2012 The PHP Group | + | Copyright (c) 1997-2013 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | diff --git a/ext/reflection/tests/bug63614.phpt b/ext/reflection/tests/bug63614.phpt new file mode 100644 index 000000000..c13ff4b20 --- /dev/null +++ b/ext/reflection/tests/bug63614.phpt @@ -0,0 +1,41 @@ +--TEST-- +Bug #63614 (Fatal error on Reflection) +--FILE-- +<?php +function dummy() { + static $a = array(); +} + +class Test +{ + const A = 0; + + public function func() + { + static $a = array( + self::A => 'a' + ); + } +} + +$reflect = new ReflectionFunction("dummy"); +print_r($reflect->getStaticVariables()); +$reflect = new ReflectionMethod('Test', 'func'); +print_r($reflect->getStaticVariables()); +?> +--EXPECT-- +Array +( + [a] => Array + ( + ) + +) +Array +( + [a] => Array + ( + [0] => a + ) + +) |
