develooper Front page | perl.perl6.internals | Postings from March 2002

[PATCH] Off-by-one error in stack code

From:
Simon Glover
Date:
March 24, 2002 14:56
Subject:
[PATCH] Off-by-one error in stack code
Message ID:
Pine.GSO.4.43.0203241747550.21159-100000@egg.amnh.org

 This code:

      set I0, 0
FOO:  set S0, I0
      savec S0
      inc I0
      lt I0, 256, FOO

      rotate_up 2

      restore S1
      print S1
      print "\n"
      end

 makes Parrot segfault. This seems to be due to an off-by-one error in
 stack_entry(..) that uncovers itself if depth==chunk->used. Enclosed
 patch fixes; test to follow shortly.

 Simon

--- stacks.c.old	Sun Mar 24 17:39:32 2002
+++ stacks.c	Sun Mar 24 17:40:10 2002
@@ -76,7 +76,7 @@
     }
     else {
         chunk = stack_base->prev;    /* Start at top */
-        while (offset > chunk->used && chunk != stack_base) {
+        while (offset >= chunk->used && chunk != stack_base) {
             offset -= chunk->used;
             chunk  = chunk->prev;
         }




nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About