diff options
| -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);  }  /** | 
