[macruby-changes] [3827] MacRuby/trunk/string.c

source_changes at macosforge.org source_changes at macosforge.org
Fri Mar 19 04:35:25 PDT 2010


Revision: 3827
          http://trac.macosforge.org/projects/ruby/changeset/3827
Author:   vincent.isambart at gmail.com
Date:     2010-03-19 04:35:23 -0700 (Fri, 19 Mar 2010)
Log Message:
-----------
Fixed a bug in String#+

Modified Paths:
--------------
    MacRuby/trunk/string.c

Modified: MacRuby/trunk/string.c
===================================================================
--- MacRuby/trunk/string.c	2010-03-19 05:13:51 UTC (rev 3826)
+++ MacRuby/trunk/string.c	2010-03-19 11:35:23 UTC (rev 3827)
@@ -2005,7 +2005,17 @@
 rstr_plus(VALUE self, SEL sel, VALUE other)
 {
     rb_str_t *newstr = str_dup(RSTR(self));
-    str_concat_string(newstr, str_need_string(other));
+    rb_str_t *otherstr = str_need_string(other);
+    // if other cannot be concatenated to self
+    // but self is ASCII-only and the encodings of both string are ASCII-compatible
+    // then the new string takes the encoding of other
+    if ((str_compatible_encoding(newstr, otherstr) == NULL)
+	    && newstr->encoding->ascii_compatible
+	    && otherstr->encoding->ascii_compatible
+	    && str_is_ruby_ascii_only(newstr)) {
+	newstr->encoding = otherstr->encoding;
+    }
+    str_concat_string(newstr, otherstr);
     if (OBJ_TAINTED(self) || OBJ_TAINTED(other)) {
 	OBJ_TAINT(newstr);
     }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100319/95d6c266/attachment.html>


More information about the macruby-changes mailing list