From 8e5ce38727246a213d88f43da72ae2769d99d3f6 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 2 Feb 2021 02:16:01 +0900 Subject: [PATCH] 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. --- src/libudev/libudev-list.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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); }