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

Reply via email to