6075b2aee0
We would try to be clever and compare the *data instead of the *elt. Somethink like this might be of more general use: /* Unlink arbitrary element from the list that contains data */ void llist_unlink_data(llist_t **head, void *data) { llist_t *elt; for (elt = *head; elt; elt = elt->link) { if (elt->data == data) { llist_unlink(elt); return; } } }