X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FDevel-Size.git;a=blobdiff_plain;f=Size.xs;h=ada99cc34d8bf8e6c195c7f2b9f790597b259e0d;hp=40404e57499ee6509b15367d17e9de9acfa2f32c;hb=98b91a13eb79864172fa4bf6a7eb84ed0ab7d468;hpb=ae8c8baa0aaa5377cb8093f5cefb61bd92902242 diff --git a/Size.xs b/Size.xs index 40404e5..ada99cc 100644 --- a/Size.xs +++ b/Size.xs @@ -942,7 +942,8 @@ sv_size(pTHX_ struct state *const st, const SV * const orig_thing, case SVt_PVFM: TAG; - padlist_size(aTHX_ st, CvPADLIST(thing), SOME_RECURSION); + if (PERL_VERSION*1000+PERL_SUBVERSION < 21006 || !CvISXSUB(thing)) + padlist_size(aTHX_ st, CvPADLIST(thing), SOME_RECURSION); sv_size(aTHX_ st, (SV *)CvOUTSIDE(thing), recurse); if (st->go_yell && !st->fm_whine) { @@ -955,15 +956,14 @@ sv_size(pTHX_ struct state *const st, const SV * const orig_thing, sv_size(aTHX_ st, (SV *)CvSTASH(thing), SOME_RECURSION); sv_size(aTHX_ st, (SV *)SvSTASH(thing), SOME_RECURSION); sv_size(aTHX_ st, (SV *)CvGV(thing), SOME_RECURSION); + if (PERL_VERSION*1000+PERL_SUBVERSION < 21006 || !CvISXSUB(thing)) + padlist_size(aTHX_ st, CvPADLIST(thing), SOME_RECURSION); sv_size(aTHX_ st, (SV *)CvOUTSIDE(thing), recurse); if (CvISXSUB(thing)) { sv_size(aTHX_ st, cv_const_sv((CV *)thing), recurse); - } else { - padlist_size(aTHX_ st, CvPADLIST(thing), SOME_RECURSION); - if (CvROOT(thing)) { - op_size(aTHX_ CvSTART(thing), st); - op_size(aTHX_ CvROOT(thing), st); - } + } else if (CvROOT(thing)) { + op_size(aTHX_ CvSTART(thing), st); + op_size(aTHX_ CvROOT(thing), st); } goto freescalar;