blob: 717242879a7530e944aba97cb65de26c0995e6ce [file] [log] [blame]
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);
}
}