From 856ad54f4504e1659797f84f8b951e6f80918da3 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 27 Dec 2017 13:25:21 +0300 Subject: [PATCH] Use zend_hash_find() instead of zend_hash_find_ptr() to avoid double check --- ext/pcre/php_pcre.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index 47f22a57f8..83cbad4eea 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -535,7 +535,7 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(zend_string *regex) size_t pattern_len; uint32_t poptions = 0; const uint8_t *tables = NULL; - pcre_cache_entry *pce; + zval *zv; pcre_cache_entry new_entry; int rc; zend_string *key; @@ -554,14 +554,14 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(zend_string *regex) /* Try to lookup the cached regex entry, and if successful, just pass back the compiled pattern, otherwise go on and compile it. */ - pce = zend_hash_find_ptr(&PCRE_G(pcre_cache), key); - if (pce) { + zv = zend_hash_find(&PCRE_G(pcre_cache), key); + if (zv) { #if HAVE_SETLOCALE if (key != regex) { zend_string_release(key); } #endif - return pce; + return (pcre_cache_entry*)Z_PTR_P(zv); } p = ZSTR_VAL(regex); @@ -768,7 +768,7 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(zend_string *regex) * these are supposedly the oldest ones (but not necessarily the least used * ones). */ - if (!pce && zend_hash_num_elements(&PCRE_G(pcre_cache)) == PCRE_CACHE_SIZE) { + if (zend_hash_num_elements(&PCRE_G(pcre_cache)) == PCRE_CACHE_SIZE) { int num_clean = PCRE_CACHE_SIZE / 8; zend_hash_apply_with_argument(&PCRE_G(pcre_cache), pcre_clean_cache, &num_clean); } @@ -827,9 +827,7 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(zend_string *regex) key = str; } - pce = zend_hash_add_new_mem(&PCRE_G(pcre_cache), key, &new_entry, sizeof(pcre_cache_entry)); - - return pce; + return zend_hash_add_new_mem(&PCRE_G(pcre_cache), key, &new_entry, sizeof(pcre_cache_entry)); } /* }}} */ -- 2.40.0