From: tokyo4j Date: Wed, 13 Nov 2024 15:25:49 +0000 (+0900) Subject: menu: invalidate nested duplicated menus X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=d7e6f3a7a8dcc879f7478f262e522764c4d6dfa8;p=proto%2Flabwc.git menu: invalidate nested duplicated menus Prior to this commit, nesting the same menus caused stack overflow at `close_all_submenus()` when trying to open it. --- diff --git a/src/menu/menu.c b/src/menu/menu.c index 045d310a..966601eb 100644 --- a/src/menu/menu.c +++ b/src/menu/menu.c @@ -663,6 +663,17 @@ handle_menu_element(xmlNode *n, struct server *server) } struct menu *menu = menu_get_by_id(server, id); + + struct menu *iter = current_menu; + while (iter) { + if (iter == menu) { + wlr_log(WLR_ERROR, "menus with the same id '%s' " + "cannot be nested", id); + goto error; + } + iter = iter->parent; + } + if (menu) { current_item = item_create(current_menu, menu->label, true); if (current_item) {