]> granicus.if.org Git - php/commitdiff
llist improvements
authorAndi Gutmans <andi@php.net>
Wed, 5 May 1999 19:24:46 +0000 (19:24 +0000)
committerAndi Gutmans <andi@php.net>
Wed, 5 May 1999 19:24:46 +0000 (19:24 +0000)
Zend/zend_llist.c
Zend/zend_llist.h

index 2a659cef88dfb9dfc14972aad8fe7b2b2a339edd..aabbe6ab21691da9bfc7e7127bb6717a1f10bd5c 100644 (file)
@@ -72,26 +72,26 @@ ZEND_API void zend_llist_del_element(zend_llist *l, void *element)
 
 ZEND_API void zend_llist_destroy(zend_llist *l)
 {
-       zend_llist_element *current, *next;
-
-       if (l->dtor) {
-               current = l->head;
-
-               while (current) {
-                       l->dtor(current->data);
-                       current = current->next;
-               }
-       }
+       zend_llist_element *current=l->head, *next;
        
-       current = l->head;
        while (current) {
                next = current->next;
+               if (l->dtor) {
+                       l->dtor(current->data);
+               }
                pefree(current, l->persistent);
                current = next;
        }
 }
 
 
+ZEND_API void zend_llist_clean(zend_llist *l)
+{
+       zend_llist_destroy(l);
+       l->head = l->tail = NULL;
+}
+
+
 ZEND_API void zend_llist_remove_tail(zend_llist *l)
 {
        zend_llist_element *old_tail;
index 0c591f55d9f22f7808e4c0cdf56be132e8dabac5..f268af9b975c401755e372d4cfa19338b089e4cb 100644 (file)
@@ -38,6 +38,7 @@ ZEND_API void zend_llist_init(zend_llist *l, size_t size, void (*dtor)(void *dat
 ZEND_API void zend_llist_add_element(zend_llist *l, void *element);
 ZEND_API void zend_llist_del_element(zend_llist *l, void *element);
 ZEND_API void zend_llist_destroy(zend_llist *l);
+ZEND_API void zend_llist_clean(zend_llist *l);
 ZEND_API void zend_llist_remove_tail(zend_llist *l);
 ZEND_API void zend_llist_copy(zend_llist *dst, zend_llist *src);
 ZEND_API void zend_llist_apply(zend_llist *l, void (*func)(void *data));