On Tue, Jun 11, 2002 at 12:04:19PM -0000, Clinton A. Pierce wrote:
> # New Ticket Created by  "Clinton A. Pierce" 
> # Please include the string:  [netlabs #702]
> # in the subject line of all future correspondence about this issue. 
> # <URL: http://bugs6.perl.org/rt2/Ticket/Display.html?id=702 >
> 
> 
> To reproduce, sync with CVS, build, run "basic.pl" -- that's all.  This 
> version of BASIC is unchanged since it last worked....

The problem was with my last stack patch. During DOD the control stack chunks
have to be walked now, since their contents are allocated using buffers.

-- 
Jason


Index: resources.c
===================================================================
RCS file: /cvs/public/parrot/resources.c,v
retrieving revision 1.63
diff -u -r1.63 resources.c
--- resources.c 12 Jun 2002 22:58:29 -0000  1.63
+++ resources.c 13 Jun 2002 00:44:42 -0000
@@ -428,7 +428,7 @@
         }
     }
 
-    /* Finally the general stack */
+    /* Now the general stack */
     start_stack = cur_stack = interpreter->user_stack;
     chunks_traced = 0;
     /* The general stack's circular, so we need to be careful */
@@ -442,6 +442,19 @@
                     buffer_lives((Buffer *)entry[i].entry.string_val);
                 }
             }
+        }
+
+        chunks_traced++;
+        cur_stack = cur_stack->prev;
+    }
+
+   /* Finally the control stack frames must be marked live */
+    start_stack = cur_stack = interpreter->control_stack;
+    chunks_traced = 0;
+    /* This stack, like the general stack is circular */
+    while (cur_stack && ((start_stack != cur_stack) || (chunks_traced == 0))) {
+        if(cur_stack->buffer){ 
+            buffer_lives(cur_stack->buffer);
         }
 
         chunks_traced++;


Reply via email to