summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2017-08-04 13:02:44 +0200
committerNikita Popov <nikita.ppv@gmail.com>2017-08-04 13:02:44 +0200
commit4e4ec31e2e37d67a6ce70e4b1b4981c737b13fb3 (patch)
tree479e7194f2a3f9e37f8d5859824b6c7caaf0465a
parent5caf05f6c53f0d2eb87e248944d1000a3277e12f (diff)
parent353f7bf461005895082c440ee6619edf7e2ec8e8 (diff)
downloadphp-git-4e4ec31e2e37d67a6ce70e4b1b4981c737b13fb3.tar.gz
Merge branch 'PHP-7.2'
-rw-r--r--ext/mbstring/mbstring.c15
-rw-r--r--ext/mbstring/tests/mb_ord.phpt2
2 files changed, 15 insertions, 2 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 57f298eaae..f0132ca1bc 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -4898,7 +4898,20 @@ static inline zend_long php_mb_ord(const char* str, size_t str_len, const char*
return -1;
}
- ret = php_mb_convert_encoding_ex(str, str_len, &mbfl_encoding_ucs4be, enc, &ret_len);
+ {
+ long orig_illegalchars = MBSTRG(illegalchars);
+ MBSTRG(illegalchars) = 0;
+ ret = php_mb_convert_encoding_ex(str, str_len, &mbfl_encoding_ucs4be, enc, &ret_len);
+ if (MBSTRG(illegalchars) != 0) {
+ if (ret) {
+ efree(ret);
+ }
+ MBSTRG(illegalchars) = orig_illegalchars;
+ return -1;
+ }
+
+ MBSTRG(illegalchars) = orig_illegalchars;
+ }
if (ret == NULL) {
return -1;
diff --git a/ext/mbstring/tests/mb_ord.phpt b/ext/mbstring/tests/mb_ord.phpt
index 4bf0d0c0e4..25249dae3c 100644
--- a/ext/mbstring/tests/mb_ord.phpt
+++ b/ext/mbstring/tests/mb_ord.phpt
@@ -6,7 +6,7 @@ mb_ord()
<?php
var_dump(
0x20bb7 === mb_ord("\u{20bb7}"),
- 0x3f === mb_ord("\u{d800}"),
+ false === mb_ord("\u{d800}"),
0x50aa === mb_ord("\x8f\xa1\xef", "EUC-JP-2004")
);