summaryrefslogtreecommitdiff
path: root/ext/pcre/php_pcre.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-03-19 13:57:39 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-03-19 13:57:39 +0100
commit661bce47aebdc67bda1616e1b6979803765173a6 (patch)
treee780b41bbcf6681360560d389972a1a321a5a734 /ext/pcre/php_pcre.c
parentd53e9c7392403abc80a38bf371ad27cf10ce7865 (diff)
downloadphp-git-661bce47aebdc67bda1616e1b6979803765173a6.tar.gz
Fixed bug #76127
Per documentation, and consistent with other preg functions, we should return false if an error occurred.
Diffstat (limited to 'ext/pcre/php_pcre.c')
-rw-r--r--ext/pcre/php_pcre.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c
index a7c1a93646..db469a576f 100644
--- a/ext/pcre/php_pcre.c
+++ b/ext/pcre/php_pcre.c
@@ -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 */