I should [TODO] this, but I think it might get lost in the recent blast 'o TODO items. (All of which I'd be thrilled if someone took on. A big thanks to Will for diving into the queue and website and getting things in a semblance of order)
This one's pretty simple. The functions we expose to embedders don't set the stacktop pointer, which causes Much Difficulty to folks embedding parrot as it'll segfault or lose track of PMCs. This is... bad. As you might expect.
What needs to be done is pretty simple. There's code in src/embed.c in Parrot_runcode to set the lo_var_ptr value if it's NULL. (Code which needs a bit of refactoring now that I look at it) What we need to do is wrap the same "check if lo_var_ptr is NULL and temporarily set it to a spot in the current stack frame" code around any and all functions in extend.c which can call into the interpreter.
Ah, ya bunch of slackers! :)
Since nobody got to this, I went and did it. We now should properly protect the interpreter when calling into extension code from outside of an interpreter. This should, hopefully, make Ponie much happier.
--
Dan
--------------------------------------it's like this------------------- Dan Sugalski even samurai [EMAIL PROTECTED] have teddy bears and even teddy bears get drunk