This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
tmp fix for Bleadperl breaks Variable-Magic
authorDavid Mitchell <davem@iabyn.com>
Wed, 24 Aug 2016 12:57:56 +0000 (13:57 +0100)
committerDavid Mitchell <davem@iabyn.com>
Wed, 24 Aug 2016 12:57:56 +0000 (13:57 +0100)
RT #128989

Prior to my commit v5.25.3-266-g1d7e644, in the absence of the SVs_RMG
flag, av_fetch() used AvFILL() for -ve keys and AvFILLp() for positive
keys. That commit changed it so they both use AvFILLp. This has broken
Variable::Magic 0.59.

As an interim measure, restore the old behaviour.

av.c

diff --git a/av.c b/av.c
index 21828a9..e3c6d5a 100644 (file)
--- a/av.c
+++ b/av.c
@@ -272,7 +272,8 @@ Perl_av_fetch(pTHX_ AV *av, SSize_t key, I32 lval)
     }
 
     neg  = (key < 0);
-    size = AvFILLp(av) + 1;
+    /* XXX tmp restore old behaviour to make Variable::Magic pass */
+    size = (neg ? AvFILL(av): AvFILLp(av)) + 1;
     key += neg * size; /* handle negative index without using branch */
 
     /* the cast from SSize_t to Size_t allows both (key < 0) and (key >= size)