[svn:parrot] r46833 - in branches/ucs4_encoding/src/string: . encoding

darbelo at svn.parrot.org darbelo at svn.parrot.org
Thu May 20 23:34:22 UTC 2010


Author: darbelo
Date: Thu May 20 23:34:21 2010
New Revision: 46833
URL: https://trac.parrot.org/parrot/changeset/46833

Log:
Update the encoding promotion logic in Parrot_str_concat() to correctly handle ucs4.

Modified:
   branches/ucs4_encoding/src/string/api.c
   branches/ucs4_encoding/src/string/encoding/ucs4.c

Modified: branches/ucs4_encoding/src/string/api.c
==============================================================================
--- branches/ucs4_encoding/src/string/api.c	Thu May 20 21:46:26 2010	(r46832)
+++ branches/ucs4_encoding/src/string/api.c	Thu May 20 23:34:21 2010	(r46833)
@@ -450,12 +450,16 @@
     if (!cs) {
         /* upgrade strings for concatenation */
         cs = Parrot_unicode_charset_ptr;
-        enc = (a->encoding == Parrot_utf16_encoding_ptr
-           ||  b->encoding == Parrot_utf16_encoding_ptr
-           ||  a->encoding == Parrot_ucs2_encoding_ptr
-           ||  b->encoding == Parrot_ucs2_encoding_ptr)
-            ? Parrot_utf16_encoding_ptr
-            : Parrot_utf8_encoding_ptr;
+        if (a->encoding == Parrot_ucs4_encoding_ptr
+            || b->encoding == Parrot_ucs4_encoding_ptr)
+            enc = Parrot_ucs4_encoding_ptr;
+        else if (a->encoding == Parrot_utf16_encoding_ptr
+            ||  b->encoding == Parrot_utf16_encoding_ptr
+            ||  a->encoding == Parrot_ucs2_encoding_ptr
+            ||  b->encoding == Parrot_ucs2_encoding_ptr)
+            enc = Parrot_utf16_encoding_ptr;
+        else
+            enc = Parrot_utf8_encoding_ptr;
 
         a = Parrot_unicode_charset_ptr->to_charset(interp, a);
         b = Parrot_unicode_charset_ptr->to_charset(interp, b);

Modified: branches/ucs4_encoding/src/string/encoding/ucs4.c
==============================================================================
--- branches/ucs4_encoding/src/string/encoding/ucs4.c	Thu May 20 21:46:26 2010	(r46832)
+++ branches/ucs4_encoding/src/string/encoding/ucs4.c	Thu May 20 23:34:21 2010	(r46833)
@@ -377,7 +377,7 @@
 #else
     UNUSED(src);
     no_ICU_lib(interp);
-#endif  
+#endif
 }
 
 /*


More information about the parrot-commits mailing list