net-p2p/transmission: Fix segfault
authorMike Gilbert <floppym@gentoo.org>
Sat, 3 Oct 2015 19:09:17 +0000 (15:09 -0400)
committerMike Gilbert <floppym@gentoo.org>
Sat, 3 Oct 2015 19:09:31 +0000 (15:09 -0400)
Bug: https://bugs.gentoo.org/534308

Package-Manager: portage-2.2.22_p5

net-p2p/transmission/files/2.84-node_alloc-segfault.patch [new file with mode: 0644]
net-p2p/transmission/transmission-2.84-r3.ebuild [moved from net-p2p/transmission/transmission-2.84-r2.ebuild with 98% similarity]

diff --git a/net-p2p/transmission/files/2.84-node_alloc-segfault.patch b/net-p2p/transmission/files/2.84-node_alloc-segfault.patch
new file mode 100644 (file)
index 0000000..7172428
--- /dev/null
@@ -0,0 +1,55 @@
+Index: libtransmission/list.c
+===================================================================
+--- libtransmission/list.c     (revision 14318)
++++ libtransmission/list.c     (revision 14319)
+@@ -30,20 +30,24 @@
+ static tr_list*
+ node_alloc (void)
+ {
+-  tr_list * ret;
++  tr_list * ret = NULL;
++  tr_lock * lock = getRecycledNodesLock ();
+-  if (recycled_nodes == NULL)
++  tr_lockLock (lock);
++
++  if (recycled_nodes != NULL)
+     {
+-      ret = tr_new (tr_list, 1);
+-    }
+-  else
+-    {
+-      tr_lockLock (getRecycledNodesLock ());
+       ret = recycled_nodes;
+       recycled_nodes = recycled_nodes->next;
+-      tr_lockUnlock (getRecycledNodesLock ());
+     }
++  tr_lockUnlock (lock);
++
++  if (ret == NULL)
++    {
++      ret = tr_new (tr_list, 1);
++    }
++
+   *ret = TR_LIST_CLEAR;
+   return ret;
+ }
+@@ -51,13 +55,15 @@
+ static void
+ node_free (tr_list* node)
+ {
++  tr_lock * lock = getRecycledNodesLock ();
++
+   if (node != NULL)
+     {
+       *node = TR_LIST_CLEAR;
+-      tr_lockLock (getRecycledNodesLock ());
++      tr_lockLock (lock);
+       node->next = recycled_nodes;
+       recycled_nodes = node;
+-      tr_lockUnlock (getRecycledNodesLock ());
++      tr_lockUnlock (lock);
+     }
+ }
similarity index 98%
rename from net-p2p/transmission/transmission-2.84-r2.ebuild
rename to net-p2p/transmission/transmission-2.84-r3.ebuild
index 09d42ad10077d5651572382c3cb7556588ec5e31..d605c802e4e8b7181d280c250cfff27ce2847f22 100644 (file)
@@ -75,6 +75,7 @@ src_prepare() {
 
        epatch "${FILESDIR}/2.84-miniupnp14.patch"
        epatch "${FILESDIR}/2.84-libevent-2.1.5.patch"
+       epatch "${FILESDIR}/2.84-node_alloc-segfault.patch"
 
        epatch_user
        eautoreconf