@@ -304,9 +304,12 @@ static ZEND_INI_MH(zend_test_observer_OnUpdateCommaList)
304304 zend_array * * p = (zend_array * * ) ZEND_INI_GET_ADDR ();
305305 zend_string * funcname ;
306306 zend_function * func ;
307+ if (!ZT_G (observer_enabled )) {
308+ return FAILURE ;
309+ }
307310 if (stage != PHP_INI_STAGE_STARTUP && stage != PHP_INI_STAGE_ACTIVATE && stage != PHP_INI_STAGE_DEACTIVATE && stage != PHP_INI_STAGE_SHUTDOWN ) {
308311 ZEND_HASH_FOREACH_STR_KEY (* p , funcname ) {
309- if ((func = zend_hash_find_ptr (EG (function_table ), funcname ))) {
312+ if ((func = zend_hash_find_ptr (EG (function_table ), funcname )) && ZEND_OBSERVER_DATA ( func ) != NULL ) {
310313 void * old_handler ;
311314 zend_observer_remove_begin_handler (func , observer_begin , (zend_observer_fcall_begin_handler * )& old_handler );
312315 zend_observer_remove_end_handler (func , observer_end , (zend_observer_fcall_end_handler * )& old_handler );
@@ -329,7 +332,7 @@ static ZEND_INI_MH(zend_test_observer_OnUpdateCommaList)
329332 zend_string_release (str );
330333 if (stage != PHP_INI_STAGE_STARTUP && stage != PHP_INI_STAGE_ACTIVATE && stage != PHP_INI_STAGE_DEACTIVATE && stage != PHP_INI_STAGE_SHUTDOWN ) {
331334 ZEND_HASH_FOREACH_STR_KEY (* p , funcname ) {
332- if ((func = zend_hash_find_ptr (EG (function_table ), funcname ))) {
335+ if ((func = zend_hash_find_ptr (EG (function_table ), funcname )) && ZEND_OBSERVER_DATA ( func ) != NULL ) {
333336 zend_observer_add_begin_handler (func , observer_begin );
334337 zend_observer_add_end_handler (func , observer_end );
335338 }
0 commit comments