@@ -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