From da3310f8b830812bd425b79a0dcda021a9fb91f8 Mon Sep 17 00:00:00 2001 From: Jakub Zelenka Date: Sun, 17 Sep 2023 15:19:59 +0100 Subject: [PATCH] Fix GH-12232: FPM: segfault dynamically loading extension without opache --- Zend/zend_globals.h | 1 + Zend/zend_string.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index 4612198b44ca..12e3c4a24303 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 1da3ce524852..c605f431631e 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)