diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2014-04-11 23:58:36 +0300 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2014-04-11 23:58:36 +0300 |
commit | 5a0a2659edbaaede9bed08c431013230a0e11122 (patch) | |
tree | 02f3ed28e6e9df3c2f07b80641fd76e01b06fc5b /lib | |
parent | 3c6e167578b1842d53219c143aa2e6fda22ad482 (diff) | |
download | bemenu-5a0a2659edbaaede9bed08c431013230a0e11122.tar.gz bemenu-5a0a2659edbaaede9bed08c431013230a0e11122.tar.bz2 bemenu-5a0a2659edbaaede9bed08c431013230a0e11122.zip |
Cleanup dmenu filter.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/filter.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/filter.c b/lib/filter.c index 3dd2ba4..85a0037 100644 --- a/lib/filter.c +++ b/lib/filter.c @@ -98,13 +98,15 @@ bmItem** _bmFilterDmenuFun(bmMenu *menu, char addition, char* (*fstrstr)(const c items = bmMenuGetItems(menu, &itemsCount); } + char *buffer = NULL; bmItem **filtered = calloc(itemsCount, sizeof(bmItem*)); if (!filtered) - return NULL; + goto fail; char **tokv; unsigned int tokc; - char *buffer = _bmFilterTokenize(menu, &tokv, &tokc); + if (!(buffer = _bmFilterTokenize(menu, &tokv, &tokc))) + goto fail; bmItem *highlighted = bmMenuGetHighlightedItem(menu); @@ -129,11 +131,17 @@ bmItem** _bmFilterDmenuFun(bmMenu *menu, char addition, char* (*fstrstr)(const c if (buffer) free(buffer); - if (tokv) free(tokv); return _bmFilterShrinkList(&filtered, menu->items.count, (*outNmemb = f)); + +fail: + if (filtered) + free(filtered); + if (buffer) + free(buffer); + return NULL; } /** |