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/