]> granicus.if.org Git - transmission/commitdiff
(trunk libT) #1743: potential threading issue in tr_list. only affects 1.50b[1-3]
authorCharles Kerr <charles@transmissionbt.com>
Sat, 24 Jan 2009 02:33:25 +0000 (02:33 +0000)
committerCharles Kerr <charles@transmissionbt.com>
Sat, 24 Jan 2009 02:33:25 +0000 (02:33 +0000)
libtransmission/list.c

index e98e0b2bb50b8d641db4036e96280078b4bd0b84..948c903d9bb80f8a988e84cb4d2ae610acc6a350 100644 (file)
 #include "list.h"
 #include "utils.h"
 
-/***
-****
-***/
-
-static tr_list * _unusedNodes = NULL;
-
-static const tr_list TR_LIST_INIT = { NULL, NULL, NULL };
-
 static tr_list*
 node_alloc( void )
 {
-    tr_list * node;
-
-    if( _unusedNodes == NULL )
-        node = tr_new( tr_list, 1 );
-    else {
-        node = _unusedNodes;
-        _unusedNodes = node->next;
-    }
-
-    *node = TR_LIST_INIT;
-    return node;
+    return tr_new0( tr_list, 1 );
 }
 
 static void
 node_free( tr_list* node )
 {
-    if( node )
-    {
-        *node = TR_LIST_INIT;
-        node->next = _unusedNodes;
-        _unusedNodes = node;
-    }
+    tr_free( node );
 }
 
 /***