From ac47be3019e9dc6ebc14d90ada1db9be359bc54c Mon Sep 17 00:00:00 2001 From: John Lindgren Date: Thu, 3 Jul 2025 23:35:37 -0400 Subject: [PATCH] menu: do not modify literal string constants Mutable string literals are a "legacy" C feature best avoided. v2: move string_truncate_at_pattern() outside fill_item() --- src/menu/menu.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/menu/menu.c b/src/menu/menu.c index c89c2b88..461c3153 100644 --- a/src/menu/menu.c +++ b/src/menu/menu.c @@ -467,16 +467,8 @@ menu_create_scene(struct menu *menu) * */ static void -fill_item(char *nodename, char *content) +fill_item(const char *nodename, const char *content) { - /* - * Nodenames for most menu-items end with '.item.menu' but top-level - * pipemenu items do not have the associated element so merely - * end with a '.item' - */ - string_truncate_at_pattern(nodename, ".item.menu"); - string_truncate_at_pattern(nodename, ".item"); - /* defines the start of a new item */ if (!strcmp(nodename, "label")) { current_item = item_create(current_menu, content, false); @@ -572,6 +564,13 @@ entry(xmlNode *node, char *nodename, char *content) printf("%s: %s\n", nodename, content ? content : (char *)cdata); } if (in_item) { + /* + * Nodenames for most menu-items end with '.item.menu' + * but top-level pipemenu items do not have the associated + * element so merely end with '.item' + */ + string_truncate_at_pattern(nodename, ".item.menu"); + string_truncate_at_pattern(nodename, ".item"); fill_item(nodename, content ? content : (char *)cdata); } xmlFree(cdata);