From 61b1ec670ff40ba8352017a1a15a2119101e019e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]>
Date: Thu, 11 May 2017 13:07:41 +0200
Subject: Upgrade to 1.56 as provided in perl-5.25.12

---
 perl-threads-shared.spec                           |  18 ++--
 threads-shared-1.55-Upgrade-to-1.56.patch          | 110 +++++++++++++++++++++
 ...-shared-alloc-arenas-with-correct-context.patch |  94 ------------------
 3 files changed, 121 insertions(+), 101 deletions(-)
 create mode 100644 threads-shared-1.55-Upgrade-to-1.56.patch
 delete mode 100644 
threads-shared-1.55-threads-shared-alloc-arenas-with-correct-context.patch

diff --git a/perl-threads-shared.spec b/perl-threads-shared.spec
index 033bcdb..54fffd9 100644
--- a/perl-threads-shared.spec
+++ b/perl-threads-shared.spec
@@ -1,12 +1,13 @@
+%global cpan_version 1.55
 Name:           perl-threads-shared
-Version:        1.55
-Release:        2%{?dist}
+Version:        1.56
+Release:        1%{?dist}
 Summary:        Perl extension for sharing data structures between threads
 License:        GPL+ or Artistic
 URL:            http://search.cpan.org/dist/threads-shared/
-Source0:        
http://www.cpan.org/authors/id/J/JD/JDHEDDEN/threads-shared-%{version}.tar.gz
-# Fix arenas allocation, RT#131124, in perl-5.25.12
-Patch0:         
threads-shared-1.55-threads-shared-alloc-arenas-with-correct-context.patch
+Source0:        
http://www.cpan.org/authors/id/J/JD/JDHEDDEN/threads-shared-%{cpan_version}.tar.gz
+# Unbudled from perl-5.25.12
+Patch0:         threads-shared-1.55-Upgrade-to-1.56.patch
 BuildRequires:  findutils
 BuildRequires:  gcc
 BuildRequires:  make
@@ -46,8 +47,8 @@ you to share variables across different threads (and 
pseudo-forks on
 Win32). It is used together with the threads module.
 
 %prep
-%setup -q -n threads-shared-%{version}
-%patch0 -p3
+%setup -q -n threads-shared-%{cpan_version}
+%patch0 -p1
 
 %build
 perl Makefile.PL INSTALLDIRS=vendor NO_PACKLIST=1 OPTIMIZE="$RPM_OPT_FLAGS"
@@ -68,6 +69,9 @@ make test
 %{_mandir}/man3/*
 
 %changelog
+* Thu May 11 2017 Petr Pisar <[email protected]> - 1.56-1
+- Upgrade to 1.56 as provided in perl-5.25.12
+
 * Fri Apr 21 2017 Petr Pisar <[email protected]> - 1.55-2
 - Fix arenas allocation (RT#131124)
 
diff --git a/threads-shared-1.55-Upgrade-to-1.56.patch 
b/threads-shared-1.55-Upgrade-to-1.56.patch
new file mode 100644
index 0000000..d1499c1
--- /dev/null
+++ b/threads-shared-1.55-Upgrade-to-1.56.patch
@@ -0,0 +1,110 @@
+From c7f8a613ce96ab9eb7472dfce9beba86c28a4031 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <[email protected]>
+Date: Thu, 11 May 2017 13:03:59 +0200
+Subject: [PATCH] Upgrade to 1.56
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Unbundled from perl-5.25.12.
+
+Signed-off-by: Petr Písař <[email protected]>
+---
+ lib/threads/shared.pm |  4 ++--
+ shared.xs             |  6 ++++--
+ t/object2.t           | 24 +++++++++++++++++++++++-
+ 3 files changed, 29 insertions(+), 5 deletions(-)
+
+diff --git a/lib/threads/shared.pm b/lib/threads/shared.pm
+index 5a203b0..73c4dd9 100644
+--- a/lib/threads/shared.pm
++++ b/lib/threads/shared.pm
+@@ -7,7 +7,7 @@ use warnings;
+ 
+ use Scalar::Util qw(reftype refaddr blessed);
+ 
+-our $VERSION = '1.55'; # Please update the pod, too.
++our $VERSION = '1.56'; # Please update the pod, too.
+ my $XS_VERSION = $VERSION;
+ $VERSION = eval $VERSION;
+ 
+@@ -195,7 +195,7 @@ threads::shared - Perl extension for sharing data 
structures between threads
+ 
+ =head1 VERSION
+ 
+-This document describes threads::shared version 1.55
++This document describes threads::shared version 1.56
+ 
+ =head1 SYNOPSIS
+ 
+diff --git a/shared.xs b/shared.xs
+index dab5e36..3c1b5e6 100644
+--- a/shared.xs
++++ b/shared.xs
+@@ -1104,8 +1104,9 @@ sharedsv_array_mg_CLEAR(pTHX_ SV *sv, MAGIC *mg)
+                 if (!sv) continue;
+                 if ( (SvOBJECT(sv) || (SvROK(sv) && (sv = SvRV(sv))))
+                   && SvREFCNT(sv) == 1 ) {
+-                    SV *tmp = Perl_sv_newmortal(caller_perl);
++                    SV *tmp;
+                     PERL_SET_CONTEXT((aTHX = caller_perl));
++                    tmp = sv_newmortal();
+                     sv_upgrade(tmp, SVt_RV);
+                     get_RV(tmp, sv);
+                     PERL_SET_CONTEXT((aTHX = PL_sharedsv_space));
+@@ -1384,8 +1385,9 @@ STORESIZE(SV *obj,IV count)
+                 if (   (SvOBJECT(sv) || (SvROK(sv) && (sv = SvRV(sv))))
+                     && SvREFCNT(sv) == 1 )
+                 {
+-                    SV *tmp = Perl_sv_newmortal(caller_perl);
++                    SV *tmp;
+                     PERL_SET_CONTEXT((aTHX = caller_perl));
++                    tmp = sv_newmortal();
+                     sv_upgrade(tmp, SVt_RV);
+                     get_RV(tmp, sv);
+                     PERL_SET_CONTEXT((aTHX = PL_sharedsv_space));
+diff --git a/t/object2.t b/t/object2.t
+index 3d795b9..31c3797 100644
+--- a/t/object2.t
++++ b/t/object2.t
+@@ -17,7 +17,7 @@ use ExtUtils::testlib;
+ 
+ BEGIN {
+     $| = 1;
+-    print("1..131\n");   ### Number of tests that will be run ###
++    print("1..133\n");   ### Number of tests that will be run ###
+ };
+ 
+ use threads;
+@@ -445,6 +445,28 @@ ok($destroyed[$ID], 'Scalar object removed from shared 
scalar');
+     ::ok($count == $n, "remove array object by undef");
+ }
+ 
++# RT #131124
++# Emptying a shared array creates new temp SVs. If there are no spare
++# SVs, a new arena is allocated. shared.xs was mallocing a new arena
++# with the wrong perl context set, meaning that when the arena was later
++# freed, it would "panic: realloc from wrong pool"
++#
++
++{
++    threads->new(sub {
++        my @a :shared;
++        push @a, bless &threads::shared::share({}) for 1..1000;
++        undef @a; # this creates lots of temp SVs
++    })->join;
++    ok(1, "#131124 undef array doesnt panic");
++
++    threads->new(sub {
++        my @a :shared;
++        push @a, bless &threads::shared::share({}) for 1..1000;
++        @a = (); # this creates lots of temp SVs
++    })->join;
++    ok(1, "#131124 clear array doesnt panic");
++}
+ 
+ 
+ # EOF
+-- 
+2.9.3
+
diff --git 
a/threads-shared-1.55-threads-shared-alloc-arenas-with-correct-context.patch 
b/threads-shared-1.55-threads-shared-alloc-arenas-with-correct-context.patch
deleted file mode 100644
index 890cd9b..0000000
--- a/threads-shared-1.55-threads-shared-alloc-arenas-with-correct-context.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From defb77b559d3c08f94e6db14937a91a4cac8e204 Mon Sep 17 00:00:00 2001
-From: David Mitchell <[email protected]>
-Date: Fri, 14 Apr 2017 10:51:56 +0100
-Subject: [PATCH] threads::shared: alloc arenas with correct context
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-RT #131124
-
-In a couple of places in shared.xs, it calls sv_newmortal() with
-a perl context different from that currently set by PERL_SET_CONTEXT().
-If sv_newmortal() happens to trigger the malloc of a new SV HEAD arena,
-then under PERL_TRACK_MEMPOOL, this will cause panics when the arena is
-freed or realloced.
-
-Petr Písař: Ported to 1.55 to not increase version to 1.56.
-
----
- dist/threads-shared/shared.xs             |  6 ++++--
- dist/threads-shared/t/object2.t           | 24 +++++++++++++++++++++++-
- 3 files changed, 29 insertions(+), 5 deletions(-)
-
-diff --git a/dist/threads-shared/shared.xs b/dist/threads-shared/shared.xs
-index dab5e36..3c1b5e6 100644
---- a/dist/threads-shared/shared.xs
-+++ b/dist/threads-shared/shared.xs
-@@ -1104,8 +1104,9 @@ sharedsv_array_mg_CLEAR(pTHX_ SV *sv, MAGIC *mg)
-                 if (!sv) continue;
-                 if ( (SvOBJECT(sv) || (SvROK(sv) && (sv = SvRV(sv))))
-                   && SvREFCNT(sv) == 1 ) {
--                    SV *tmp = Perl_sv_newmortal(caller_perl);
-+                    SV *tmp;
-                     PERL_SET_CONTEXT((aTHX = caller_perl));
-+                    tmp = sv_newmortal();
-                     sv_upgrade(tmp, SVt_RV);
-                     get_RV(tmp, sv);
-                     PERL_SET_CONTEXT((aTHX = PL_sharedsv_space));
-@@ -1384,8 +1385,9 @@ STORESIZE(SV *obj,IV count)
-                 if (   (SvOBJECT(sv) || (SvROK(sv) && (sv = SvRV(sv))))
-                     && SvREFCNT(sv) == 1 )
-                 {
--                    SV *tmp = Perl_sv_newmortal(caller_perl);
-+                    SV *tmp;
-                     PERL_SET_CONTEXT((aTHX = caller_perl));
-+                    tmp = sv_newmortal();
-                     sv_upgrade(tmp, SVt_RV);
-                     get_RV(tmp, sv);
-                     PERL_SET_CONTEXT((aTHX = PL_sharedsv_space));
-diff --git a/dist/threads-shared/t/object2.t b/dist/threads-shared/t/object2.t
-index 3d795b9..31c3797 100644
---- a/dist/threads-shared/t/object2.t
-+++ b/dist/threads-shared/t/object2.t
-@@ -17,7 +17,7 @@ use ExtUtils::testlib;
- 
- BEGIN {
-     $| = 1;
--    print("1..131\n");   ### Number of tests that will be run ###
-+    print("1..133\n");   ### Number of tests that will be run ###
- };
- 
- use threads;
-@@ -445,6 +445,28 @@ ok($destroyed[$ID], 'Scalar object removed from shared 
scalar');
-     ::ok($count == $n, "remove array object by undef");
- }
- 
-+# RT #131124
-+# Emptying a shared array creates new temp SVs. If there are no spare
-+# SVs, a new arena is allocated. shared.xs was mallocing a new arena
-+# with the wrong perl context set, meaning that when the arena was later
-+# freed, it would "panic: realloc from wrong pool"
-+#
-+
-+{
-+    threads->new(sub {
-+        my @a :shared;
-+        push @a, bless &threads::shared::share({}) for 1..1000;
-+        undef @a; # this creates lots of temp SVs
-+    })->join;
-+    ok(1, "#131124 undef array doesnt panic");
-+
-+    threads->new(sub {
-+        my @a :shared;
-+        push @a, bless &threads::shared::share({}) for 1..1000;
-+        @a = (); # this creates lots of temp SVs
-+    })->join;
-+    ok(1, "#131124 clear array doesnt panic");
-+}
- 
- 
- # EOF
--- 
-2.7.4
-
-- 
cgit v1.1


        
https://src.fedoraproject.org/cgit/perl-threads-shared.git/commit/?h=master&id=61b1ec670ff40ba8352017a1a15a2119101e019e
_______________________________________________
perl-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to