From: Yu Watanabe Date: Mon, 1 Feb 2021 17:16:01 +0000 (+0900) Subject: libudev: also drop the entry from LIST even if unique flag is set X-Git-Tag: v248-rc1~224^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8e5ce38727246a213d88f43da72ae2769d99d3f6;p=thirdparty%2Fsystemd.git 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. --- diff --git a/src/libudev/libudev-list.c b/src/libudev/libudev-list.c index c224e9df6d3..d42008e48d6 100644 --- a/src/libudev/libudev-list.c +++ b/src/libudev/libudev-list.c @@ -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); }