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