diff -Nru a/include/asterisk/astobj.h b/include/asterisk/astobj.h --- a/include/asterisk/astobj.h 2004-12-28 23:27:05 -07:00 +++ b/include/asterisk/astobj.h 2004-12-28 23:27:05 -07:00 @@ -179,6 +179,7 @@ while((iterator = (container)->head)) { \ (container)->head = (iterator)->next[0]; \ ASTOBJ_DESTROY(iterator,destructor); \ + ASTOBJ_UNREF(iterator,destructor); \ } \ ASTOBJ_CONTAINER_UNLOCK(container); \ } while(0) @@ -190,7 +191,7 @@ ASTOBJ_CONTAINER_TRAVERSE(container, do { \ ASTOBJ_RDLOCK(iterator); \ if (!(comparefunc(iterator->field, (data)))) { \ - found = ASTOBJ_REF(iterator); \ + found = iterator; \ ASTOBJ_CONTAINER_WRLOCK(container); \ if (prev) \ prev->next[0] = next; \ @@ -232,7 +233,7 @@ do { \ ASTOBJ_CONTAINER_WRLOCK(container); \ (newobj)->next[0] = (container)->head; \ - (container)->head = (newobj); \ + (container)->head = ASTOBJ_REF(newobj); \ ASTOBJ_CONTAINER_UNLOCK(container); \ } while(0)