summaryrefslogtreecommitdiff
path: root/lib/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/menu.c')
-rw-r--r--lib/menu.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/menu.c b/lib/menu.c
index f414772..e31c25f 100644
--- a/lib/menu.c
+++ b/lib/menu.c
@@ -346,8 +346,6 @@ bmItem* bmMenuGetHighlightedItem(const bmMenu *menu)
/**
* Set selected items to bmMenu instance.
*
- * @warning The list won't be copied, do not free it.
- *
* @param menu bmMenu instance where items will be set.
* @param items Array of bmItem pointers to set.
* @param nmemb Total count of items in array.
@@ -356,7 +354,13 @@ bmItem* bmMenuGetHighlightedItem(const bmMenu *menu)
int bmMenuSetSelectedItems(bmMenu *menu, bmItem **items, unsigned int nmemb)
{
assert(menu);
- return _bmItemListSetItemsNoCopy(&menu->selection, items, nmemb);
+
+ bmItem **newItems;
+ if (!(newItems = calloc(sizeof(bmItem*), nmemb)))
+ return 0;
+
+ memcpy(newItems, items, sizeof(bmItem*) * nmemb);
+ return _bmItemListSetItemsNoCopy(&menu->selection, newItems, nmemb);
}
/**