From 976edd47e26d02ecbe807ae4a6e5255f94e5e6a0 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 17 Aug 2005 11:54:34 +0000 Subject: [PATCH] Fixed bug #32981 (ReflectionMethod::getStaticVariables() causes apache2.0.54 seg fault) --- NEWS | 2 ++ Zend/zend_reflection_api.c | 1 + ext/reflection/php_reflection.c | 1 + ext/reflection/tests/bug32981.phpt | 2 +- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index af32db5f40..cc60b3527f 100644 --- a/NEWS +++ b/NEWS @@ -50,6 +50,8 @@ PHP NEWS - Fixed bug #33558 (warning with nested calls to functions returning by reference). (Dmitry) - Fixed bug #33326 (Cannot build extensions with phpize on Macosx). (Jani) +- Fixed bug #32981 (ReflectionMethod::getStaticVariables() causes apache2.0.54 + seg fault). (Dmitry) - Fixed bug #32139 (SOAP client does not auto-handle base64 encoding). (Ilia) - Fixed bug #32010 (Memory leak in mssql_fetch_batch). (fmk) - Fixed bug #29334 (win32 mail() provides incorrect Date: header). (Jani) diff --git a/Zend/zend_reflection_api.c b/Zend/zend_reflection_api.c index 2bbd91bc98..89ed94e8a1 100644 --- a/Zend/zend_reflection_api.c +++ b/Zend/zend_reflection_api.c @@ -1373,6 +1373,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_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.c b/ext/reflection/php_reflection.c index 2bbd91bc98..89ed94e8a1 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -1373,6 +1373,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_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/tests/bug32981.phpt b/ext/reflection/tests/bug32981.phpt index 298756e147..1f89ca682b 100755 --- a/ext/reflection/tests/bug32981.phpt +++ b/ext/reflection/tests/bug32981.phpt @@ -28,7 +28,7 @@ array(1) { [0]=> array(1) { ["enabled"]=> - UNKNOWN:0 + bool(true) } } ===DONE=== -- 2.40.0