mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-18 06:47:31 -04:00
Merge branch 'safer-addons' into 'master'
util/addon: make wlr_addon_set_finish() safer See merge request wlroots/wlroots!4379
This commit is contained in:
commit
b9535c7239
1 changed files with 8 additions and 8 deletions
16
util/addon.c
16
util/addon.c
|
|
@ -11,16 +11,16 @@ void wlr_addon_set_init(struct wlr_addon_set *set) {
|
|||
}
|
||||
|
||||
void wlr_addon_set_finish(struct wlr_addon_set *set) {
|
||||
struct wlr_addon *addon, *tmp;
|
||||
wl_list_for_each_safe(addon, tmp, &set->addons, link) {
|
||||
while (!wl_list_empty(&set->addons)) {
|
||||
struct wl_list *link = set->addons.next;
|
||||
struct wlr_addon *addon = wl_container_of(link, addon, link);
|
||||
const struct wlr_addon_interface *impl = addon->impl;
|
||||
addon->impl->destroy(addon);
|
||||
if (set->addons.next == link) {
|
||||
wlr_log(WLR_ERROR, "Dangling addon: %s", impl->name);
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
wl_list_for_each(addon, &set->addons, link) {
|
||||
wlr_log(WLR_ERROR, "Dangling addon: %s", addon->impl->name);
|
||||
}
|
||||
|
||||
assert(wl_list_empty(&set->addons));
|
||||
}
|
||||
|
||||
void wlr_addon_init(struct wlr_addon *addon, struct wlr_addon_set *set,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue