From afa0df2442b2b99ad3ea91af35d993b7e507e606 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]>
Date: Wed, 17 Jun 2015 09:58:28 +0200
Subject: Other perl-5.22 fix for GV to IV optimization


diff --git a/perl-rpm-build-perl.spec b/perl-rpm-build-perl.spec
index 3f28064..6517fb0 100644
--- a/perl-rpm-build-perl.spec
+++ b/perl-rpm-build-perl.spec
@@ -1,6 +1,6 @@
 Name:       perl-rpm-build-perl 
 Version:    0.82
-Release:    11%{?dist}
+Release:    12%{?dist}
 # README: GPLv2+
 # perl.prov: LGPLv2+
 License:    GPLv2+
@@ -86,6 +86,9 @@ make test
 %{_mandir}/man1/*.1*
 
 %changelog
+* Wed Jun 17 2015 Petr Pisar <[email protected]> - 0.82-12
+- Other perl-5.22 fix for GV to IV optimization (bug #1231258)
+
 * Wed Jun 17 2015 Petr Pisar <[email protected]> - 0.82-11
 - Make adjustments for perl-5.22 compatible with older perls (bug #1231258)
 
diff --git a/rpm-build-perl-0.82-Adjust-to-perl-5.22.patch 
b/rpm-build-perl-0.82-Adjust-to-perl-5.22.patch
index 5bb3cec..58c7697 100644
--- a/rpm-build-perl-0.82-Adjust-to-perl-5.22.patch
+++ b/rpm-build-perl-0.82-Adjust-to-perl-5.22.patch
@@ -1,4 +1,4 @@
-From 7d2911bc4694b272b1ed116bb7c87de644e8e1a0 Mon Sep 17 00:00:00 2001
+From b73a37a7eb615693b5516068360f61d5b4e8f241 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]>
 Date: Tue, 16 Jun 2015 18:20:20 +0200
 Subject: [PATCH] Adjust to perl-5.22
@@ -22,6 +22,8 @@ Date: Sat Oct 18 10:23:26 2014 -0700
 
     Use srefgen for anoncode
 
+and GV to IV optimizations when calling some subroutines.
+
 This patch implements the changes to make tests passing with perl
 5.22 and previous versions too.
 
@@ -29,12 +31,13 @@ CPAN RT#104885
 
 Signed-off-by: Petr Písař <[email protected]>
 ---
- lib/B/PerlReq.pm | 19 +++++++++++++++----
+ lib/B/PerlReq.pm | 24 +++++++++++++++++++-----
  lib/B/Walker.pm  |  9 ++++++++-
- 2 files changed, 23 insertions(+), 5 deletions(-)
+ t/01-B-PerlReq.t |  3 +++
+ 3 files changed, 30 insertions(+), 6 deletions(-)
 
 diff --git a/lib/B/PerlReq.pm b/lib/B/PerlReq.pm
-index 303454f..4527b2b 100644
+index 303454f..2e2a2ba 100644
 --- a/lib/B/PerlReq.pm
 +++ b/lib/B/PerlReq.pm
 @@ -44,7 +44,7 @@ our @Skip = (
@@ -77,6 +80,18 @@ index 303454f..4527b2b 100644
                return unless $methods{$method};
                return unless $args->name eq "const";
                my $sv = const_sv($args);
+@@ -316,7 +327,10 @@ sub grok_entersub ($) {
+       elsif ($op->first->name eq "gv") {
+               $op = $op->first;
+               use B::Walker qw(padval);
+-              my $func = padval($op->padix)->NAME;
++              my $padval = padval($op->padix);
++              # perl 5.22 sometimes optimizes to B::IV
++              return unless ref $padval eq 'B::GV';
++              my $func = $padval->NAME;
+               return unless $funcs{$func};
+               $funcs{$func}->($func, $args);
+       }
 diff --git a/lib/B/Walker.pm b/lib/B/Walker.pm
 index b71f204..9e3083c 100644
 --- a/lib/B/Walker.pm
@@ -104,6 +119,18 @@ index b71f204..9e3083c 100644
  our $Level = 0;
  our $Line;
  our $Sub;
+diff --git a/t/01-B-PerlReq.t b/t/01-B-PerlReq.t
+index 7233cb6..6e02759 100644
+--- a/t/01-B-PerlReq.t
++++ b/t/01-B-PerlReq.t
+@@ -139,4 +139,7 @@ EOF
+ 
+ cmp_ok "perl(Cwd.pm) >= 1.0", "eq", grok q(use Cwd 0==0);
+ 
++# perl 5.22 sometimes optimizes to B::IV leading to crash
++cmp_ok "$d", "eq", grok qq(sub foo{} foo; require $m;);
++
+ #END { $? = 0; }
 -- 
 2.1.0
 
-- 
cgit v0.10.2


        
http://pkgs.fedoraproject.org/cgit/perl-rpm-build-perl.git/commit/?h=master&id=afa0df2442b2b99ad3ea91af35d993b7e507e606
--
Fedora Extras Perl SIG
http://www.fedoraproject.org/wiki/Extras/SIGs/Perl
perl-devel mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/perl-devel

Reply via email to