Index: main/utils.c =================================================================== --- main/utils.c (revision 426139) +++ main/utils.c (working copy) @@ -2061,18 +2061,18 @@ { struct ast_string_field_pool *pool, *prev; - if (ptr == __ast_string_field_empty) { - return; - } - for (pool = pool_head, prev = NULL; pool; prev = pool, pool = pool->prev) { if ((ptr >= pool->base) && (ptr <= (pool->base + pool->size))) { pool->active -= AST_STRING_FIELD_ALLOCATION(ptr); - if ((pool->active == 0) && prev) { + } + if (pool->active == 0) { + if (prev) { prev->prev = pool->prev; ast_free(pool); + pool = prev; + } else { + pool->used = 0; } - break; } } }