diff options
-rw-r--r-- | ext/mbstring/libmbfl/filters/mbfilter_gb18030.c | 2 | ||||
-rw-r--r-- | ext/mbstring/tests/bug68846.phpt | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c b/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c index a5ead7a693..721c16292b 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c @@ -239,7 +239,7 @@ mbfl_filt_conv_gb18030_wchar(int c, mbfl_convert_filter *filter) if (((c1 >= 0x81 && c1 <= 0x84) || (c1 >= 0x90 && c1 <= 0xe3)) && c2 >= 0x30 && c2 <= 0x39 && c3 >= 0x81 && c3 <= 0xfe && c >= 0x30 && c <= 0x39) { if (c1 >= 0x90 && c1 <= 0xe3) { - w = ((c1 - 0x90)*10 + (c2 - 0x30)*126 + (c3 - 0x81))*10 + (c - 0x30) + 0x10000; + w = ((((c1 - 0x90)*10 + (c2 - 0x30))*126 + (c3 - 0x81)))*10 + (c - 0x30) + 0x10000; } else { /* Unicode BMP */ w = (((c1 - 0x81)*10 + (c2 - 0x30))*126 + (c3 - 0x81))*10 + (c - 0x30); if (w >= 0 && w <= 39419) { diff --git a/ext/mbstring/tests/bug68846.phpt b/ext/mbstring/tests/bug68846.phpt new file mode 100644 index 0000000000..1b43e3d11b --- /dev/null +++ b/ext/mbstring/tests/bug68846.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #68846 False detection of CJK Unified Ideographs Extension E +--SKIPIF-- +<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?> +--FILE-- +<?php +var_dump( + "\x00\x02\x0b\xb7" === mb_convert_encoding("\x95\x34\xb2\x35", 'UTF-32', 'GB18030') +); +?> +--EXPECT-- +bool(true)
\ No newline at end of file |