[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