From: Nicholas Clark Date: Thu, 26 Mar 2015 16:22:17 +0000 (+0100) Subject: Move the declaration and closing brace of padlist_size() outside of the #ifdefs X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=p5sagit%2FDevel-Size.git;a=commitdiff_plain;h=c3a03aa5cc3e179b8bb9fc43235d0ace78195a25 Move the declaration and closing brace of padlist_size() outside of the #ifdefs The prototype (and return type) needs to be the same, whatever the implementation is, so DRY by having it 3 times (and missing C in one of them - spotted by Slaven's CPAN smoker). --- diff --git a/CHANGES b/CHANGES index e1f55be..cb90fb9 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,7 @@ Revision history for Perl extension Devel::Size. 0.79_54 2015-03-27 nicholas + * Fix the definition of padlist_size() for post-5.20 perls. 0.79_53 2015-03-25 nicholas * Avoid t/recurse.t failing on earlier versions on 32 bit platforms diff --git a/Size.xs b/Size.xs index ada99cc..b03bcda 100644 --- a/Size.xs +++ b/Size.xs @@ -7,6 +7,11 @@ #include "XSUB.h" #include "ppport.h" +#ifndef PERL_COMBI_VERSION +#define PERL_COMBI_VERSION (PERL_REVISION * 1000000 + PERL_VERSION * 1000 + \ + PERL_SUBVERSION) +#endif + /* Not yet in ppport.h */ #ifndef CvISXSUB # define CvISXSUB(cv) (CvXSUB(cv) ? TRUE : FALSE) @@ -762,11 +767,17 @@ const U8 body_sizes[SVt_LAST] = { #endif }; +#if PERL_COMBI_VERSION < 5008001 +typedef AV PADLIST; +#endif + +static void +padlist_size(pTHX_ struct state *const st, const PADLIST * const padl, + const int recurse) { + #if PERL_VERSION*1000+PERL_SUBVERSION >= 21007 /* This is, as ever, excessively nosey with the implementation, and hence fragile. */ -padlist_size(pTHX_ struct state *const st, const PADLIST * const padl, - const int recurse) { SSize_t i; const PADNAMELIST *pnl; @@ -793,12 +804,9 @@ padlist_size(pTHX_ struct state *const st, const PADLIST * const padl, st->total_size += sizeof(PAD*) * i; while (--i) sv_size(aTHX_ st, (SV*)PadlistARRAY(padl)[i], recurse); -} #elif defined PadlistNAMES -static void -padlist_size(pTHX_ struct state *const st, const PADLIST * const padl, - const int recurse) { + SSize_t i; if (!check_new(st, padl)) return; @@ -808,14 +816,13 @@ padlist_size(pTHX_ struct state *const st, const PADLIST * const padl, st->total_size += sizeof(PAD*) * i; while (--i) sv_size(aTHX_ st, (SV*)PadlistARRAY(padl)[i], recurse); -} + #else -static void -padlist_size(pTHX_ struct state *const st, const AV * const padl, - const int recurse) { + sv_size(aTHX_ st, (SV*)padl, recurse); -} + #endif +} static void sv_size(pTHX_ struct state *const st, const SV * const orig_thing,