1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2024-12-26 01:27:28 +00:00

(trunk libT) keep a pool of reusable tr_list nodes

This commit is contained in:
Jordan Lee 2011-04-05 00:56:56 +00:00
parent 1e0f92ba78
commit e0f6ade71e

View file

@ -14,16 +14,32 @@
#include "list.h"
#include "utils.h"
static const tr_list TR_LIST_CLEAR = { NULL, NULL, NULL };
static tr_list * recycled_nodes = NULL;
static tr_list*
node_alloc( void )
{
return tr_new0( tr_list, 1 );
tr_list * ret;
if( recycled_nodes == NULL )
ret = tr_new( tr_list, 1 );
else {
ret = recycled_nodes;
recycled_nodes = recycled_nodes->next;
}
*ret = TR_LIST_CLEAR;
return ret;
}
static void
node_free( tr_list* node )
{
tr_free( node );
*node = TR_LIST_CLEAR;
node->next = recycled_nodes;
recycled_nodes = node;
}
/***