I think the substr in strnative.c is incorrectly growing the destination
string.  The following is a patch to fix it.  It also uses the previous
patch for function names...so it needs to be applied after that patch.

Index: strnative.c
===================================================================
RCS file: /home/perlcvs/parrot/strnative.c,v
retrieving revision 1.5
diff -u -r1.5 strnative.c
--- strnative.c 2001/09/13 08:44:08     1.5
+++ strnative.c 2001/09/13 19:57:42
@@ -26,7 +26,7 @@
     
     /* b is now in native format */
     string_grow(a, a->strlen + b->strlen);
-    Sys_Memcopy(a->bufstart + a->strlen, b->bufstart, b->strlen);
+    mem_sys_memcopy(a->bufstart + a->strlen, b->bufstart, b->strlen);
     a->strlen = a->bufused = a->strlen + b->strlen;
     return a;
 }
@@ -46,8 +46,8 @@
            dest->encoding = &(Parrot_string_vtable[enc_native]);
     
     /* Offset and length have already been "normalized" */
-    string_grow(dest, src->strlen - length);
-    Sys_Memcopy(dest->bufstart, src->bufstart + offset, length);
+    string_grow(dest, length);
+    mem_sys_memcopy(dest->bufstart, src->bufstart + offset, length);
     dest->strlen = dest->bufused = length;
     
     return dest;

Reply via email to