diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2014-04-12 20:56:00 +0300 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2014-04-12 20:56:00 +0300 |
commit | 01ff5f48edde73364d8f4b11f4f5480c8cc86789 (patch) | |
tree | 668d5028f12855c9eba391147e27bd8f4ddf1351 /lib/menu.c | |
parent | ab54f2bc0796b963ac8181f8f31d720e9feffd98 (diff) | |
download | bemenu-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.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -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); } /** |