[svn:parrot] r48834 - trunk/src/string/encoding

nwellnhof at svn.parrot.org nwellnhof at svn.parrot.org
Tue Sep 7 23:29:33 UTC 2010


Author: nwellnhof
Date: Tue Sep  7 23:29:32 2010
New Revision: 48834
URL: https://trac.parrot.org/parrot/changeset/48834

Log:
[str] Use str_copy in to_encoding

Modified:
   trunk/src/string/encoding/ascii.c
   trunk/src/string/encoding/latin1.c
   trunk/src/string/encoding/ucs4.c
   trunk/src/string/encoding/utf16.c
   trunk/src/string/encoding/utf8.c

Modified: trunk/src/string/encoding/ascii.c
==============================================================================
--- trunk/src/string/encoding/ascii.c	Tue Sep  7 22:58:38 2010	(r48833)
+++ trunk/src/string/encoding/ascii.c	Tue Sep  7 23:29:32 2010	(r48834)
@@ -164,7 +164,7 @@
                     "lossy conversion to ascii");
         }
 
-        dest           = Parrot_str_clone(interp, src);
+        dest           = Parrot_str_copy(interp, src);
         dest->encoding = Parrot_ascii_encoding_ptr;
     }
     else {

Modified: trunk/src/string/encoding/latin1.c
==============================================================================
--- trunk/src/string/encoding/latin1.c	Tue Sep  7 22:58:38 2010	(r48833)
+++ trunk/src/string/encoding/latin1.c	Tue Sep  7 23:29:32 2010	(r48834)
@@ -153,7 +153,7 @@
     STRING      *dest;
 
     if (STRING_max_bytes_per_codepoint(src) == 1) {
-        dest           = Parrot_str_clone(interp, src);
+        dest           = Parrot_str_copy(interp, src);
         dest->encoding = Parrot_latin1_encoding_ptr;
     }
     else {

Modified: trunk/src/string/encoding/ucs4.c
==============================================================================
--- trunk/src/string/encoding/ucs4.c	Tue Sep  7 22:58:38 2010	(r48833)
+++ trunk/src/string/encoding/ucs4.c	Tue Sep  7 23:29:32 2010	(r48834)
@@ -176,7 +176,7 @@
     ASSERT_ARGS(ucs4_to_encoding)
 #if PARROT_HAS_ICU
     if (src->encoding == Parrot_ucs4_encoding_ptr) {
-        return Parrot_str_clone(interp, src);
+        return Parrot_str_copy(interp, src);
     }
     else {
         UINTVAL len = Parrot_str_length(interp, src);

Modified: trunk/src/string/encoding/utf16.c
==============================================================================
--- trunk/src/string/encoding/utf16.c	Tue Sep  7 22:58:38 2010	(r48833)
+++ trunk/src/string/encoding/utf16.c	Tue Sep  7 23:29:32 2010	(r48834)
@@ -171,8 +171,10 @@
     int src_len;
     STRING *result;
 
-    if (src->encoding == Parrot_utf16_encoding_ptr ||
-            src->encoding == Parrot_ucs2_encoding_ptr)
+    if (src->encoding == Parrot_utf16_encoding_ptr
+    ||  src->encoding == Parrot_ucs2_encoding_ptr)
+        /* we have to use clone instead of copy because the Unicode upcase
+         * and downcase functions assume to get an unshared buffer */
         return Parrot_str_clone(interp, src);
 
     result = Parrot_gc_new_string_header(interp, 0);

Modified: trunk/src/string/encoding/utf8.c
==============================================================================
--- trunk/src/string/encoding/utf8.c	Tue Sep  7 22:58:38 2010	(r48833)
+++ trunk/src/string/encoding/utf8.c	Tue Sep  7 23:29:32 2010	(r48834)
@@ -196,7 +196,7 @@
     unsigned char *p;
 
     if (src_encoding == Parrot_utf8_encoding_ptr)
-        return Parrot_str_clone(interp, src);
+        return Parrot_str_copy(interp, src);
 
     src_len          = src->strlen;
     result           = Parrot_gc_new_string_header(interp, 0);


More information about the parrot-commits mailing list