#include "fstring.h"
#include "logger.h"
#include "util.h"
-#include "utlist.h"
#include "main.h"
/* Sleep time for spin lock in nanoseconds */
cur->data = data;
cur->function = function;
cur->loc = line;
- DL_APPEND (pool->destructors, cur);
+ cur->prev = pool->destructors;
+ pool->destructors = cur;
POOL_MTX_UNLOCK ();
}
}
{
struct _pool_destructors *tmp;
- DL_FOREACH (pool->destructors, tmp) {
+ tmp = pool->destructors;
+ while (tmp) {
if (tmp->func == func && tmp->data == old_data) {
tmp->func = func;
tmp->data = new_data;
break;
}
+ tmp = tmp->prev;
}
}
{
struct _pool_chain *cur = pool->first_pool, *tmp;
struct _pool_chain_shared *cur_shared = pool->shared_pool, *tmp_shared;
- struct _pool_destructors *destructor;
+ struct _pool_destructors *destructor = pool->destructors;
POOL_MTX_LOCK ();
/* Call all pool destructors */
- DL_FOREACH (pool->destructors, destructor) {
+ while (destructor) {
/* Avoid calling destructors for NULL pointers */
if (destructor->data != NULL) {
destructor->func (destructor->data);
}
+ destructor = destructor->prev;
}
while (cur) {
void *data; /**< data to free */
const gchar *function; /**< function from which this destructor was added */
const gchar *loc; /**< line number */
- struct _pool_destructors *prev, *next; /**< chain link */
+ struct _pool_destructors *prev; /**< chain link */
};
/**