cvsuser     02/03/14 10:45:22

  Modified:    .        string.c
               t/op     string.t
  Log:
  Fix 0-length substr problem
  
  Revision  Changes    Path
  1.57      +3 -6      parrot/string.c
  
  Index: string.c
  ===================================================================
  RCS file: /home/perlcvs/parrot/string.c,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -w -r1.56 -r1.57
  --- string.c  13 Mar 2002 18:06:18 -0000      1.56
  +++ string.c  14 Mar 2002 18:45:18 -0000      1.57
  @@ -1,7 +1,7 @@
   /* string.c
    *  Copyright: (When this is determined...it will go here)
    *  CVS Info
  - *     $Id: string.c,v 1.56 2002/03/13 18:06:18 simon Exp $
  + *     $Id: string.c,v 1.57 2002/03/14 18:45:18 dan Exp $
    *  Overview:
    *     This is the api definitions for the string subsystem
    *  Data Structure and Algorithms:
  @@ -349,9 +349,10 @@
   
       /* Allow regexes to return $' easily for "aaa" =~ /aaa/ */
       if (offset == (INTVAL)string_length(src) || length < 1) {
  -        return NULL;
  +        return string_make(interpreter, NULL, 0, src->encoding, 0, src->type);
       }
   
  +    true_length = (UINTVAL)length;
       if (offset < 0) {
           true_offset = (UINTVAL)(src->strlen + offset);
       }
  @@ -359,10 +360,6 @@
       if (true_offset > src->strlen - 1) {        /* 0 based... */
           internal_exception(SUBSTR_OUT_OF_STRING,
                              "Cannot take substr outside string");
  -    }
  -    true_length = (UINTVAL)length;
  -    if (length < 0) {
  -        true_length = 0;
       }
       if (true_length > (src->strlen - true_offset)) {
           true_length = (UINTVAL)(src->strlen - true_offset);
  
  
  
  1.19      +10 -1     parrot/t/op/string.t
  
  Index: string.t
  ===================================================================
  RCS file: /home/perlcvs/parrot/t/op/string.t,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -w -r1.18 -r1.19
  --- string.t  1 Jan 2002 17:22:55 -0000       1.18
  +++ string.t  14 Mar 2002 18:45:22 -0000      1.19
  @@ -1,6 +1,6 @@
   #! perl -w
   
  -use Parrot::Test tests => 63;
  +use Parrot::Test tests => 64;
   
   output_is( <<'CODE', <<OUTPUT, "set_s_s|sc" );
        set     S4, "JAPH\n"
  @@ -18,6 +18,15 @@
        set     S4, "JAPH"
        length  I4, S4
        print   I4
  +     end
  +CODE
  +
  +output_is( <<'CODE', '0', "0 length substr" );
  +     set     I4, 0
  +     set     S4, "JAPH"
  +        substr  S3, S4, 1, 0
  +     length  I4, S3
  +        print I4
        end
   CODE
   
  
  
  


Reply via email to