]> granicus.if.org Git - php/commitdiff
Compute needle end only after checking it's non-empty
authorNikita Popov <nikita.ppv@gmail.com>
Wed, 28 Aug 2019 07:32:18 +0000 (09:32 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Wed, 28 Aug 2019 07:32:18 +0000 (09:32 +0200)
Zend/zend_operators.h

index b42ad7f39575e54ca14505529d3c5fb60868da75..ef88dfb58461a13c69004d34300936e2a9fefa49 100644 (file)
@@ -148,7 +148,6 @@ static zend_always_inline const char *
 zend_memnstr(const char *haystack, const char *needle, size_t needle_len, const char *end)
 {
        const char *p = haystack;
-       const char ne = needle[needle_len-1];
        ptrdiff_t off_p;
        size_t off_s;
 
@@ -168,6 +167,7 @@ zend_memnstr(const char *haystack, const char *needle, size_t needle_len, const
        }
 
        if (EXPECTED(off_s < 1024 || needle_len < 9)) { /* glibc memchr is faster when needle is too short */
+               const char ne = needle[needle_len-1];
                end -= needle_len;
 
                while (p <= end) {
@@ -210,7 +210,6 @@ static zend_always_inline const char *
 zend_memnrstr(const char *haystack, const char *needle, size_t needle_len, const char *end)
 {
     const char *p = end;
-    const char ne = needle[needle_len-1];
     ptrdiff_t off_p;
     size_t off_s;
 
@@ -230,6 +229,7 @@ zend_memnrstr(const char *haystack, const char *needle, size_t needle_len, const
     }
 
        if (EXPECTED(off_s < 1024 || needle_len < 3)) {
+               const char ne = needle[needle_len-1];
                p -= needle_len;
 
                do {