diff --git a/ext/pcre/pcre.c b/ext/pcre/pcre.c index 97749fa46e9..c2415853095 100644 --- a/ext/pcre/pcre.c +++ b/ext/pcre/pcre.c @@ -380,6 +380,7 @@ void _pcre_match(INTERNAL_FUNCTION_PARAMETERS, int global) piece = subject->value.str.val; subject_end = piece + subject->value.str.len; match = NULL; + matched = 0; do { /* Execute the regular expression. */ @@ -396,7 +397,7 @@ void _pcre_match(INTERNAL_FUNCTION_PARAMETERS, int global) /* If something has matched */ if (count >= 0) { - matched = 1; + matched++; match = piece + offsets[0]; /* If subpatters array has been passed, fill it in with values. */ @@ -445,10 +446,6 @@ void _pcre_match(INTERNAL_FUNCTION_PARAMETERS, int global) piece += offsets[1]; } } - /* If nothing matched */ - else { - matched = 0; - } } while (global && count >= 0); /* Add the match sets to the output array and clean up */