HV* stash;
do {
stash = SvSTASH(sv);
+ assert(SvTYPE(stash) == SVt_PVHV);
if (HvNAME(stash)) {
CV* destructor = NULL;
- assert(SvTYPE(stash) == SVt_PVHV);
if (!SvOBJECT(stash)) destructor = (CV *)SvSTASH(stash);
if (!destructor) {
GV * const gv =
SvSTASH(stash) =
destructor ? (HV *)destructor : ((HV *)0)+1;
}
+ assert(!destructor || destructor == ((CV *)0)+1
+ || SvTYPE(destructor) == SVt_PVCV);
if (destructor && destructor != ((CV *)0)+1
/* A constant subroutine can have no side effects, so
don't bother calling it. */
)
{
SV* const tmpref = newRV(sv);
- assert(SvTYPE(destructor) == SVt_PVCV);
SvREADONLY_on(tmpref); /* DESTROY() could be naughty */
ENTER;
PUSHSTACKi(PERLSI_DESTROY);