summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_llist.c4
-rw-r--r--Zend/zend_llist.h2
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);