To: | makemaker [...] perl.org |
CC: | Theo Schlossnagle <jesus [...] omniti.com> |
Subject: | makemaker FAQ |
From: | Theo Schlossnagle <jesus [...] omniti.com> |
Date: | Wed, 10 Aug 2005 14:36:14 -0400 |
The MakeMaker FAQ talks about chaining bootstraps:
Module1:
BOOT:
boot_Module1(aTHX_ cv);
It implies you could do (inside of mybase):
BOOT:
boot_mybase__Foo(aTHX_ cv);
boot_mybase__Bar(aTHX_ cv);
boot_mybase__Quux(aTHX_ cv);
boot_mybase__Bang(aTHX_ cv);
This isn't the case. Those boots use ST(0) as input and set it using
XSRETURN_YES. So, the first call clobbers it for the second.
I think you need to:
PUSHMARK(SP);
PUTBACK;
boot_....
SPAGAIN;
PUTBACK;
around each call.
Thoughts?
// Theo Schlossnagle
// Principal Engineer -- http://www.omniti.com/~jesus/
// OmniTI Computer Consulting, Inc. -- http://www.omniti.com/
// Ecelerity: fastest MTA on Earth