In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/c9875a611df71a98a3ccc8a0f3989fc29bd48ed8?hp=19ec6f53213f9991324bf8d63675bf45dc8b0af0>
- Log ----------------------------------------------------------------- commit c9875a611df71a98a3ccc8a0f3989fc29bd48ed8 Author: Nicholas Clark <[email protected]> Date: Thu Sep 17 15:24:47 2009 +0100 In S_mro_get_linear_isa_c3() replace sv_inc() with code for the cases we need. ----------------------------------------------------------------------- Summary of changes: ext/mro/mro.xs | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ext/mro/mro.xs b/ext/mro/mro.xs index 69557a6..00c960d 100644 --- a/ext/mro/mro.xs +++ b/ext/mro/mro.xs @@ -158,9 +158,15 @@ S_mro_get_linear_isa_c3(pTHX_ HV* stash, U32 level) HE* const he = hv_fetch_ent(tails, seqitem, 1, 0); if(he) { SV* const val = HeVAL(he); - /* This will increment undef to 1, which is what we - want for a newly created entry. */ - sv_inc(val); + /* For 5.8.0 and later, sv_inc() with increment undef to + an IV of 1, which is what we want for a newly created + entry. However, for 5.6.x it will become an NV of + 1.0, which confuses the SvIVX() checks above. */ + if(SvIOK(val)) { + SvIV_set(val, SvIVX(val) + 1); + } else { + sv_setiv(val, 1); + } } } } -- Perl5 Master Repository
