diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index 4612198b44ca5..12e3c4a24303d 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -119,6 +119,7 @@ struct _zend_compiler_globals { bool multibyte; bool detect_unicode; bool encoding_declared; + bool interned_strings_initialized; zend_ast *ast; zend_arena *ast_arena; diff --git a/Zend/zend_string.c b/Zend/zend_string.c index 1da3ce5248522..c605f431631e7 100644 --- a/Zend/zend_string.c +++ b/Zend/zend_string.c @@ -231,6 +231,9 @@ static zend_string* ZEND_FASTCALL zend_new_interned_string_request(zend_string * return ret; } + if (!CG(interned_strings_initialized)) { + zend_interned_strings_activate(); + } ret = zend_interned_string_ht_lookup(str, &CG(interned_strings)); if (ret) { zend_string_release(str); @@ -339,6 +342,7 @@ static zend_string* ZEND_FASTCALL zend_string_init_existing_interned_request(con ZEND_API void zend_interned_strings_activate(void) { zend_init_interned_strings_ht(&CG(interned_strings), 0); + CG(interned_strings_initialized) = true; } ZEND_API void zend_interned_strings_deactivate(void)