Yep, you were right...I made a patch for you and applied it :)

Thanks!
Tanton

Philip Kendall wrote:
* The trickier one: with the above two changes, test and test2 work,
  but test3 tries to pop a non-existent stack frame. In Parrot_pop_i,
  should the fragment:

      if (chunk_base->prev) {
        /* Do so. We don't need to adjust used/free, since they're
           already OK for the "We're full" case */
        chunk_base = chunk_base->prev;
        interpreter->int_reg = &chunk_base->IReg[chunk_base->used];
       }
       
  actually be:

      if (chunk_base->prev) {
        /* Do so. We don't need to adjust used/free, since they're
           already OK for the "We're full" case */
        chunk_base = chunk_base->prev;
        interpreter->int_reg = &chunk_base->IReg[chunk_base->used - 1];
       }

  If chunk_base->used == 1, I think we want chunk_base->IReg[0], not
  chunk_base->IReg[1]?? (but I'll happily admit I haven't got my head
  around the memory management yet). Similar considerations apply to the
  other Parrot_pop_? functions.

Apologies for any stupidity...

Phil

-- 
  Philip Kendall <[EMAIL PROTECTED]>
  http://www.srcf.ucam.org/~pak21/

Reply via email to