@@ -184,7 +184,7 @@ static zend_observer_fcall_handlers observer_fcall_init(zend_execute_data *execu
184
184
} else if (fbc -> common .function_name ) {
185
185
if (ZT_G (observer_observe_functions )) {
186
186
return (zend_observer_fcall_handlers ){observer_begin , observer_end };
187
- } else if (ZT_G ( observer_observe_function_names ) && zend_hash_exists (ZT_G (observer_observe_function_names ), fbc -> common .function_name )) {
187
+ } else if (zend_hash_exists (ZT_G (observer_observe_function_names ), fbc -> common .function_name )) {
188
188
return (zend_observer_fcall_handlers ){observer_begin , observer_end };
189
189
}
190
190
} else {
@@ -259,40 +259,25 @@ static void fiber_suspend_observer(zend_fiber_context *from, zend_fiber_context
259
259
static ZEND_INI_MH (zend_test_observer_OnUpdateCommaList )
260
260
{
261
261
zend_array * * p = (zend_array * * ) ZEND_INI_GET_ADDR ();
262
- if (stage != PHP_INI_STAGE_STARTUP && stage != PHP_INI_STAGE_SHUTDOWN && (ZT_G (observer_observe_all ) || !* p )) {
263
- return FAILURE ;
264
- }
265
-
266
262
zend_string * funcname ;
267
263
zend_function * func ;
268
- if (* p ) {
269
- if (EG (function_table )) {
270
- ZEND_HASH_FOREACH_STR_KEY (* p , funcname ) {
271
- if ((func = zend_hash_find_ptr (EG (function_table ), funcname ))) {
272
- zend_observer_remove_begin_handler (& func -> op_array , observer_begin );
273
- zend_observer_remove_end_handler (& func -> op_array , observer_end );
274
- }
275
- } ZEND_HASH_FOREACH_END ();
276
- }
277
- if (stage == PHP_INI_STAGE_STARTUP || stage == PHP_INI_STAGE_SHUTDOWN ) {
278
- zend_hash_release (* p );
279
- * p = NULL ;
280
- } else {
281
- zend_hash_clean (* p );
282
- }
264
+ if (stage != PHP_INI_STAGE_STARTUP && stage != PHP_INI_STAGE_ACTIVATE && stage != PHP_INI_STAGE_DEACTIVATE && stage != PHP_INI_STAGE_SHUTDOWN ) {
265
+ ZEND_HASH_FOREACH_STR_KEY (* p , funcname ) {
266
+ if ((func = zend_hash_find_ptr (EG (function_table ), funcname ))) {
267
+ zend_observer_remove_begin_handler (& func -> op_array , observer_begin );
268
+ zend_observer_remove_end_handler (& func -> op_array , observer_end );
269
+ }
270
+ } ZEND_HASH_FOREACH_END ();
283
271
}
272
+ zend_hash_clean (* p );
284
273
if (new_value && ZSTR_LEN (new_value )) {
285
- if (!* p ) {
286
- * p = malloc (sizeof (HashTable ));
287
- }
288
- _zend_hash_init (* p , 8 , ZVAL_PTR_DTOR , 1 );
289
274
const char * start = ZSTR_VAL (new_value ), * ptr ;
290
275
while ((ptr = strchr (start , ',' ))) {
291
276
zend_hash_str_add_empty_element (* p , start , ptr - start );
292
277
start = ptr + 1 ;
293
278
}
294
279
zend_hash_str_add_empty_element (* p , start , ZSTR_VAL (new_value ) + ZSTR_LEN (new_value ) - start );
295
- if (EG ( function_table ) ) {
280
+ if (stage != PHP_INI_STAGE_STARTUP && stage != PHP_INI_STAGE_ACTIVATE && stage != PHP_INI_STAGE_DEACTIVATE && stage != PHP_INI_STAGE_SHUTDOWN ) {
296
281
ZEND_HASH_FOREACH_STR_KEY (* p , funcname ) {
297
282
if ((func = zend_hash_find_ptr (EG (function_table ), funcname ))) {
298
283
zend_observer_add_begin_handler (& func -> op_array , observer_begin );
@@ -351,8 +336,13 @@ void zend_test_observer_shutdown(SHUTDOWN_FUNC_ARGS)
351
336
if (type != MODULE_TEMPORARY ) {
352
337
UNREGISTER_INI_ENTRIES ();
353
338
}
339
+ }
354
340
355
- if (ZT_G (observer_observe_function_names )) {
356
- zend_hash_release (ZT_G (observer_observe_function_names ));
357
- }
341
+ void zend_test_observer_ginit (zend_zend_test_globals * zend_test_globals ) {
342
+ zend_test_globals -> observer_observe_function_names = malloc (sizeof (HashTable ));
343
+ _zend_hash_init (zend_test_globals -> observer_observe_function_names , 8 , ZVAL_PTR_DTOR , 1 );
344
+ }
345
+
346
+ void zend_test_observer_gshutdown (zend_zend_test_globals * zend_test_globals ) {
347
+ zend_hash_release (zend_test_globals -> observer_observe_function_names );
358
348
}
0 commit comments