@@ -273,10 +273,16 @@ static ZEND_INI_MH(zend_test_observer_OnUpdateCommaList)
273273 if (new_value && ZSTR_LEN (new_value )) {
274274 const char * start = ZSTR_VAL (new_value ), * ptr ;
275275 while ((ptr = strchr (start , ',' ))) {
276- zend_hash_str_add_empty_element (* p , start , ptr - start );
276+ zend_string * str = zend_string_init (start , ptr - start , 1 );
277+ GC_MAKE_PERSISTENT_LOCAL (str );
278+ zend_hash_add_empty_element (* p , str );
279+ zend_string_release (str );
277280 start = ptr + 1 ;
278281 }
279- zend_hash_str_add_empty_element (* p , start , ZSTR_VAL (new_value ) + ZSTR_LEN (new_value ) - start );
282+ zend_string * str = zend_string_init (start , ZSTR_VAL (new_value ) + ZSTR_LEN (new_value ) - start , 1 );
283+ GC_MAKE_PERSISTENT_LOCAL (str );
284+ zend_hash_add_empty_element (* p , str );
285+ zend_string_release (str );
280286 if (stage != PHP_INI_STAGE_STARTUP && stage != PHP_INI_STAGE_ACTIVATE && stage != PHP_INI_STAGE_DEACTIVATE && stage != PHP_INI_STAGE_SHUTDOWN ) {
281287 ZEND_HASH_FOREACH_STR_KEY (* p , funcname ) {
282288 if ((func = zend_hash_find_ptr (EG (function_table ), funcname ))) {
@@ -341,6 +347,7 @@ void zend_test_observer_shutdown(SHUTDOWN_FUNC_ARGS)
341347void zend_test_observer_ginit (zend_zend_test_globals * zend_test_globals ) {
342348 zend_test_globals -> observer_observe_function_names = malloc (sizeof (HashTable ));
343349 _zend_hash_init (zend_test_globals -> observer_observe_function_names , 8 , ZVAL_PTR_DTOR , 1 );
350+ GC_MAKE_PERSISTENT_LOCAL (zend_test_globals -> observer_observe_function_names );
344351}
345352
346353void zend_test_observer_gshutdown (zend_zend_test_globals * zend_test_globals ) {
0 commit comments