Merge branch 'PHP-8.2'

* PHP-8.2:
  Mangle PCRE regex cache key with JIT option
This commit is contained in:
Ilija Tovilo 2023-06-22 11:11:09 +02:00
commit 99340269c6
No known key found for this signature in database
GPG key ID: A4F5D403F118200A

View file

@ -612,11 +612,24 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache_ex(zend_string *regex, in
pcre_cache_entry *ret;
if (locale_aware && BG(ctype_string)) {
key = zend_string_concat2(
key = zend_string_concat3(
ZSTR_VAL(BG(ctype_string)), ZSTR_LEN(BG(ctype_string)),
ZSTR_VAL(regex), ZSTR_LEN(regex));
ZSTR_VAL(regex), ZSTR_LEN(regex),
#ifdef HAVE_PCRE_JIT_SUPPORT
PCRE_G(jit) ? "1" : "0", 1
#else
"", 0
#endif
);
} else {
#ifdef HAVE_PCRE_JIT_SUPPORT
key = zend_string_concat2(
ZSTR_VAL(regex), ZSTR_LEN(regex),
PCRE_G(jit) ? "1" : "0", 1
);
#else
key = regex;
#endif
}
/* Try to lookup the cached regex entry, and if successful, just pass
@ -770,7 +783,7 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache_ex(zend_string *regex, in
return NULL;
}
if (key != regex) {
if (locale_aware && BG(ctype_string)) {
tables = (uint8_t *)zend_hash_find_ptr(&char_tables, BG(ctype_string));
if (!tables) {
zend_string *_k;