summaryrefslogtreecommitdiff
path: root/lib/menu.c
diff options
context:
space:
mode:
authorJari Vetoniemi <mailroxas@gmail.com>2014-04-12 20:56:00 +0300
committerJari Vetoniemi <mailroxas@gmail.com>2014-04-12 20:56:00 +0300
commit01ff5f48edde73364d8f4b11f4f5480c8cc86789 (patch)
tree668d5028f12855c9eba391147e27bd8f4ddf1351 /lib/menu.c
parentab54f2bc0796b963ac8181f8f31d720e9feffd98 (diff)
downloadbemenu-01ff5f48edde73364d8f4b11f4f5480c8cc86789.tar.gz
bemenu-01ff5f48edde73364d8f4b11f4f5480c8cc86789.tar.bz2
bemenu-01ff5f48edde73364d8f4b11f4f5480c8cc86789.zip
The list will be copied now.
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);
}
/**