diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bemenu.h | 2 | ||||
-rw-r--r-- | lib/menu.c | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/lib/bemenu.h b/lib/bemenu.h index 9ef684f..37c7d1e 100644 --- a/lib/bemenu.h +++ b/lib/bemenu.h @@ -252,8 +252,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. @@ -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); } /** |