PCRE_EXTRA_MARK is useful only for preg_replace_callbakc().

Removed branch expectations.
This commit is contained in:
Dmitry Stogov 2017-06-02 14:34:31 +03:00
parent 8dc6b41011
commit 4f947e1f40

View File

@ -1314,11 +1314,16 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su
} }
#endif #endif
while (1) {
#ifdef PCRE_EXTRA_MARK #ifdef PCRE_EXTRA_MARK
if (EXPECTED(replace)) {
extra->flags &= ~PCRE_EXTRA_MARK;
} else {
extra->mark = &mark; extra->mark = &mark;
extra->flags |= PCRE_EXTRA_MARK; extra->flags |= PCRE_EXTRA_MARK;
}
#endif #endif
while (1) {
/* Execute the regular expression. */ /* Execute the regular expression. */
#ifdef HAVE_PCRE_JIT_SUPPORT #ifdef HAVE_PCRE_JIT_SUPPORT
if ((extra->flags & PCRE_EXTRA_EXECUTABLE_JIT) if ((extra->flags & PCRE_EXTRA_EXECUTABLE_JIT)
@ -1342,8 +1347,8 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su
piece = subject + start_offset; piece = subject + start_offset;
/* if (EXPECTED(count > 0 && (limit == -1 || limit > 0))) */ /* if (EXPECTED(count > 0 && (limit == -1 || limit > 0))) */
if (EXPECTED(count > 0 && (offsets[1] - offsets[0] >= 0) && limit)) { if (count > 0 && (offsets[1] - offsets[0] >= 0) && limit) {
if (UNEXPECTED(replace_count)) { if (replace_count) {
++*replace_count; ++*replace_count;
} }
@ -1442,10 +1447,10 @@ PHPAPI zend_string *php_pcre_replace_impl(pcre_cache_entry *pce, zend_string *su
zend_string_release(eval_result); zend_string_release(eval_result);
} }
if (EXPECTED(limit)) { if (limit) {
limit--; limit--;
} }
} else if (count == PCRE_ERROR_NOMATCH || UNEXPECTED(limit == 0)) { } else if (count == PCRE_ERROR_NOMATCH || limit == 0) {
/* If we previously set PCRE_NOTEMPTY_ATSTART after a null match, /* If we previously set PCRE_NOTEMPTY_ATSTART after a null match,
this is not necessarily the end. We need to advance this is not necessarily the end. We need to advance
the start offset, and continue. Fudge the offset values the start offset, and continue. Fudge the offset values