libudev: also drop the entry from LIST even if unique flag is set

Otherwise, the list becomes dirty when an entry is freed.

This also remove the entry from the hashmap only when its name is set.
The name should be always set, so that does not change anything. But
just for safety.
This commit is contained in:
Yu Watanabe 2021-02-02 02:16:01 +09:00
parent 140716a516
commit 8e5ce38727

View file

@ -39,9 +39,10 @@ static struct udev_list_entry *udev_list_entry_free(struct udev_list_entry *entr
return NULL;
if (entry->list) {
if (entry->list->unique)
if (entry->list->unique && entry->name)
hashmap_remove(entry->list->unique_entries, entry->name);
else
if (!entry->list->unique || entry->list->uptodate)
LIST_REMOVE(entries, entry->list->entries, entry);
}