diff options
-rw-r--r-- | Zend/zend_llist.c | 4 | ||||
-rw-r--r-- | Zend/zend_llist.h | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/Zend/zend_llist.c b/Zend/zend_llist.c index e7f69c546c..1024f0fa8e 100644 --- a/Zend/zend_llist.c +++ b/Zend/zend_llist.c @@ -63,12 +63,12 @@ ZEND_API void zend_llist_prepend_element(zend_llist *l, void *element) } -ZEND_API void zend_llist_del_element(zend_llist *l, void *element) +ZEND_API void zend_llist_del_element(zend_llist *l, void *element, int (*compare)(void *element1, void *element2)) { zend_llist_element *current=l->head; while (current) { - if (!memcmp(current->data, element, l->size)) { + if (compare(current->data, element)) { if (current->prev) { current->prev->next = current->next; } else { diff --git a/Zend/zend_llist.h b/Zend/zend_llist.h index f2767c1d59..c6eddb59b2 100644 --- a/Zend/zend_llist.h +++ b/Zend/zend_llist.h @@ -42,7 +42,7 @@ BEGIN_EXTERN_C() ZEND_API void zend_llist_init(zend_llist *l, size_t size, void (*dtor)(void *data), unsigned char persistent); ZEND_API void zend_llist_add_element(zend_llist *l, void *element); ZEND_API void zend_llist_prepend_element(zend_llist *l, void *element); -ZEND_API void zend_llist_del_element(zend_llist *l, void *element); +ZEND_API void zend_llist_del_element(zend_llist *l, void *element, int (*compare)(void *element1, void *element2)); 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); |