[前][次][番号順一覧][スレッド一覧]

ruby-changes:12186

From: matz <ko1@a...>
Date: Sat, 27 Jun 2009 03:22:08 +0900 (JST)
Subject: [ruby-changes:12186] Ruby:r23864 (trunk): * numeric.c (int_chr): use default_internal encoding as default

matz	2009-06-27 03:18:12 +0900 (Sat, 27 Jun 2009)

  New Revision: 23864

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=23864

  Log:
    * numeric.c (int_chr): use default_internal encoding as default
      destination encoding if set.  [ruby-dev:38717]

  Modified files:
    trunk/ChangeLog
    trunk/numeric.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 23863)
+++ ChangeLog	(revision 23864)
@@ -1,3 +1,8 @@
+Sat Jun 27 03:16:56 2009  Yukihiro Matsumoto  <matz@r...>
+
+	* numeric.c (int_chr): use default_internal encoding as default
+	  destination encoding if set.  [ruby-dev:38717]
+
 Sat Jun 27 03:09:04 2009  Yukihiro Matsumoto  <matz@r...>
 
 	* io.c (argf_rewind): need to rewind $. and ARGF.lineno.
Index: numeric.c
===================================================================
--- numeric.c	(revision 23863)
+++ numeric.c	(revision 23864)
@@ -1945,10 +1945,15 @@
 
     switch (argc) {
       case 0:
-	if (i < 0 || 0xff < i) {
+	if (i < 0) {
 	  out_of_range:
 	    rb_raise(rb_eRangeError, "%"PRIdVALUE " out of char range", i);
 	}
+	if (0xff < i) {
+	    enc = rb_default_internal_encoding();
+	    if (!enc) goto out_of_range;
+	    goto decode;
+	}
 	c = (char)i;
 	if (i < 0x80) {
 	    return rb_usascii_str_new(&c, 1);
@@ -1964,6 +1969,7 @@
     }
     enc = rb_to_encoding(argv[0]);
     if (!enc) enc = rb_ascii8bit_encoding();
+  decode:
 #if SIZEOF_INT < SIZEOF_LONG
     if (i > INT_MAX) goto out_of_range;
 #endif

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]