diff options
Diffstat (limited to 'enc/gb18030.c')
-rw-r--r-- | enc/gb18030.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/enc/gb18030.c b/enc/gb18030.c index 231b961188..f62a2394c9 100644 --- a/enc/gb18030.c +++ b/enc/gb18030.c @@ -166,7 +166,20 @@ gb18030_mbc_enc_len(const UChar* p, const UChar* e, OnigEncoding enc ARG_UNUSED) static OnigCodePoint gb18030_mbc_to_code(const UChar* p, const UChar* end, OnigEncoding enc) { - return onigenc_mbn_mbc_to_code(enc, p, end); + int c, i, len; + OnigCodePoint n; + + len = enclen(enc, p, end); + n = (OnigCodePoint )(*p++); + if (len == 1) return n; + + for (i = 1; i < len; i++) { + if (p >= end) break; + c = *p++; + n <<= 8; n += c; + } + n &= 0x7FFFFFFF; + return n; } static int |