return -1;
}
- ret = php_mb_convert_encoding(str, str_len, "UCS-4BE", enc, &ret_len);
+ {
+ long orig_illegalchars = MBSTRG(illegalchars);
+ MBSTRG(illegalchars) = 0;
+ ret = php_mb_convert_encoding(str, str_len, "UCS-4BE", 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;
}
<?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")
);