summaryrefslogtreecommitdiff
path: root/numeric.c
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-02 08:06:40 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-02 08:06:40 +0000
commit55eecb54e79260379480dacb13272b10699ec5a8 (patch)
tree743165f1b1c1a116dc2e39cb608a6a4c0871d82d /numeric.c
parentf099a11c2a55d4a00338bb494cb072bbf5f3c299 (diff)
merges r29445 from trunk into ruby_1_9_2.
-- * numeric.c (int_chr): a codepoint of Ruby M17N must be 32bit unsigned int; GB18030 uses MSB. Also note that OnigCodePoint is defined as uisigned int. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@30037 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'numeric.c')
-rw-r--r--numeric.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/numeric.c b/numeric.c
index fdea3ce50c..170d970bdc 100644
--- a/numeric.c
+++ b/numeric.c
@@ -2055,7 +2055,7 @@ int_chr(int argc, VALUE *argv, VALUE num)
{
char c;
int n;
- SIGNED_VALUE i = NUM2LONG(num);
+ uint32_t i = NUM2UINT(num);
rb_encoding *enc;
VALUE str;
@@ -2089,9 +2089,9 @@ int_chr(int argc, VALUE *argv, VALUE num)
#if SIZEOF_INT < SIZEOF_VALUE
if (i > UINT_MAX) goto out_of_range;
#endif
- if (i < 0 || (n = rb_enc_codelen((int)i, enc)) <= 0) goto out_of_range;
+ if (i < 0 || (n = rb_enc_codelen(i, enc)) <= 0) goto out_of_range;
str = rb_enc_str_new(0, n, enc);
- rb_enc_mbcput((int)i, RSTRING_PTR(str), enc);
+ rb_enc_mbcput(i, RSTRING_PTR(str), enc);
return str;
}