Chopn is broken for n < 0, here a fix and tests.

Alex Gough
-- 
To have the reputation of possessing the most perfect
social tact, talk to every woman as if you loved her,
and to every man as if he bored you. 

##################
Index: string.c
===================================================================
RCS file: /home/perlcvs/parrot/string.c,v
retrieving revision 1.10
diff -u -r1.10 string.c
--- string.c    2001/10/02 14:01:30     1.10
+++ string.c    2001/10/02 14:14:48
@@ -143,6 +143,7 @@
     if (n > s->strlen) {
         n = s->strlen;
     }
+    if (n < 0) n = 0;
     return (ENC_VTABLE(s)->chopn)(s, n);
 }
 
Index: t/op/string.t
===================================================================
RCS file: /home/perlcvs/parrot/t/op/string.t,v
retrieving revision 1.5
diff -u -r1.5 string.t
--- t/op/string.t       2001/09/25 09:12:57     1.5
+++ t/op/string.t       2001/10/02 14:14:49
@@ -1,6 +1,6 @@
 #! perl -w
 
-use Parrot::Test tests => 10;
+use Parrot::Test tests => 11;
 
 output_is( <<'CODE', <<OUTPUT, "set_s_sc" );
        set     S4, "JAPH\n"
@@ -33,6 +33,27 @@
 CODE
 JAPH
 japh
+OUTPUT
+
+output_is(<<'CODE', <<OUTPUT, "chopn, OOB values");
+       set     S1, "A string of length 21"
+       chopn   S1, 0
+       print   S1
+       print   "\n"
+       chopn   S1, 4
+       print   S1
+       print   "\n"
+       chopn   S1, -4
+       print   S1
+       print   "\n"
+       chopn   S1, 1000
+       print   S1
+       print   "** nothing **\n"
+CODE
+A string of length 21
+A string of lengt
+A string of lengt
+** nothing **
 OUTPUT
 
 output_is( <<'CODE', 'JAPH', "substr_s_s_i_i" );



Reply via email to