[#41916] Proposal: Bitmap Marking GC — Narihiro Nakamura <authornari@...>

Hi.

18 messages 2012/01/05

[#41941] [ruby-trunk - Bug #5851][Open] make check fails when compiling with GCC 4.7 - *** longjmp causes uninitialized stack frame *** — Vit Ondruch <v.ondruch@...>

12 messages 2012/01/06

[#41979] [ruby-trunk - Bug #5865][Open] Exception#== should return false if the classes differ — Hiro Asari <asari.ruby@...>

10 messages 2012/01/08

[#42003] [ruby-trunk - Bug #5871][Open] regexp \W matches some word characters when inside a case-insensitive character class — Gareth Adams <gareth@...>

14 messages 2012/01/09

[#42016] [ruby-trunk - Feature #5873][Open] Adopt FFI over DL — Heesob Park <phasis@...>

15 messages 2012/01/10

[#42149] [ruby-trunk - Feature #5899][Open] chaining comparsions. — Ondrej Bilka <neleai@...>

12 messages 2012/01/16

[#42164] [ruby-trunk - Feature #5903][Open] Optimize st_table (take 2) — Yura Sokolov <funny.falcon@...>

18 messages 2012/01/17

[ruby-core:42106] [ruby-trunk - Bug #5848] Array#inspect having an element with non-ASCII compatible #inspect result

From: Heesob Park <phasis@...>
Date: 2012-01-13 06:11:03 UTC
List: ruby-core #42106
Issue #5848 has been updated by Heesob Park.


Here is a patch for this issue.
But I suspect it may cause another issue.

diff --git a/array.c b/array.c.new
index e58ac0b..bdad94d 100644
--- a/array.c
+++ b/array.c.new
@@ -1792,19 +1792,24 @@ inspect_ary(VALUE ary, VALUE dummy, int recur)
     int tainted = OBJ_TAINTED(ary);
     int untrust = OBJ_UNTRUSTED(ary);
     long i;
-    VALUE s, str;
+    VALUE s, str, temp;
 
     if (recur) return rb_usascii_str_new_cstr("[...]");
     str = rb_str_buf_new2("[");
+    temp = rb_str_buf_new2(", ");
     for (i=0; i<RARRAY_LEN(ary); i++) {
 	s = rb_inspect(RARRAY_PTR(ary)[i]);
 	if (OBJ_TAINTED(s)) tainted = TRUE;
 	if (OBJ_UNTRUSTED(s)) untrust = TRUE;
-	if (i > 0) rb_str_buf_cat2(str, ", ");
-	else rb_enc_copy(str, s);
+	if (i > 0) {
+	  temp = rb_str_conv_enc(temp,rb_enc_get(temp),rb_enc_get(str));	  
+	  rb_str_buf_append(str, temp);
+	} else 	
+	  str = rb_str_conv_enc(str,rb_enc_get(str),rb_enc_get(s));	
 	rb_str_buf_append(str, s);
     }
-    rb_str_buf_cat2(str, "]");
+    temp = rb_str_conv_enc(rb_str_buf_new2("]"),rb_usascii_encoding(),rb_enc_get(str));
+    rb_str_buf_append(str, temp);
     if (tainted) OBJ_TAINT(str);
     if (untrust) OBJ_UNTRUST(str);
     return str;

----------------------------------------
Bug #5848: Array#inspect having an element with non-ASCII compatible #inspect result
https://bugs.ruby-lang.org/issues/5848

Author: John Firebaugh
Status: Assigned
Priority: Normal
Assignee: Yui NARUSE
Category: 
Target version: 
ruby -v: ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0]


Is this a bug?

>> class O
>>   def inspect
>>     "foo".encode!(Encoding::UTF_16BE)
>>   end
>> end
=> nil
>> [O.new].inspect
=> "\u5B00\u6600\u6F00\u6F5D"



-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next