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



Reply via email to