ruby-changes:5239
From: naruse <ko1@a...>
Date: Mon, 2 Jun 2008 03:29:22 +0900 (JST)
Subject: [ruby-changes:5239] Ruby:r16737 (trunk): * enc/gb18030.c (gb18030_mbc_to_code): mask by 0x7FFFFFFF
naruse 2008-06-02 03:29:08 +0900 (Mon, 02 Jun 2008)
New Revision: 16737
Modified files:
trunk/ChangeLog
trunk/enc/gb18030.c
Log:
* enc/gb18030.c (gb18030_mbc_to_code): mask by 0x7FFFFFFF
because OnigCodePoint will be used as 32bit signed int.
Masking by 0x7FFFFFFF is ok on GB18030;
Minumum 4bytes character is 0x81308130.
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16737&r2=16736&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enc/gb18030.c?r1=16737&r2=16736&diff_format=u
Index: ChangeLog
===================================================================
--- ChangeLog (revision 16736)
+++ ChangeLog (revision 16737)
@@ -1,3 +1,10 @@
+Mon Jun 2 03:23:25 2008 NARUSE, Yui <naruse@r...>
+
+ * enc/gb18030.c (gb18030_mbc_to_code): mask by 0x7FFFFFFF
+ because OnigCodePoint will be used as 32bit signed int.
+ Masking by 0x7FFFFFFF is ok on GB18030;
+ Minumum 4bytes character is 0x81308130.
+
Sun Jun 1 22:29:35 2008 NARUSE, Yui <naruse@r...>
* rational.c (string_to_r_internal): use rb_isdigit.
Index: enc/gb18030.c
===================================================================
--- enc/gb18030.c (revision 16736)
+++ enc/gb18030.c (revision 16737)
@@ -166,7 +166,20 @@
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
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/