Per documentation, and consistent with other preg functions, we
should return false if an error occurred.
This commit is contained in:
Nikita Popov 2019-03-19 13:57:39 +01:00
parent d53e9c7392
commit 661bce47ae
5 changed files with 24 additions and 11 deletions

View file

@ -2517,7 +2517,8 @@ PHPAPI void php_pcre_split_impl(pcre_cache_entry *pce, zend_string *subject_str,
match_data = pcre2_match_data_create_from_pattern(pce->re, gctx);
if (!match_data) {
PCRE_G(error_code) = PHP_PCRE_INTERNAL_ERROR;
return;
zval_ptr_dtor(return_value);
RETURN_FALSE;
}
}
@ -2637,6 +2638,11 @@ error:
pcre2_match_data_free(match_data);
}
if (PCRE_G(error_code) != PHP_PCRE_NO_ERROR) {
zval_ptr_dtor(return_value);
RETURN_FALSE;
}
last:
start_offset = (last_match - ZSTR_VAL(subject_str)); /* the offset might have been incremented, but without further successful matches */