From 9af98cd4657bfcfe21f42ab36d9be7de7b2709b2 Mon Sep 17 00:00:00 2001 From: Ilija Tovilo Date: Sun, 11 Sep 2022 19:40:20 +0200 Subject: [PATCH] Fix ZEND_RC_MOD_CHECK() for thread local ini parser strings --- Zend/zend_ini_parser.y | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y index 7eb37535207..58ad4b360bb 100644 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@ -269,6 +269,9 @@ ZEND_API zend_result zend_parse_ini_string(char *str, bool unbuffered_errors, in static void zval_ini_dtor(zval *zv) { if (Z_TYPE_P(zv) == IS_STRING) { + if (ZEND_SYSTEM_INI) { + GC_MAKE_PERSISTENT_LOCAL(Z_STR_P(zv)); + } zend_string_release(Z_STR_P(zv)); } } @@ -324,6 +327,9 @@ statement: printf("NORMAL: '%s' = '%s'\n", Z_STRVAL($1), Z_STRVAL($3)); #endif ZEND_INI_PARSER_CB(&$1, &$3, NULL, ZEND_INI_PARSER_ENTRY, ZEND_INI_PARSER_ARG); + if (ZEND_SYSTEM_INI) { + GC_MAKE_PERSISTENT_LOCAL(Z_STR($1)); + } zend_string_release(Z_STR($1)); zval_ini_dtor(&$3); }