summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJari Vetoniemi <mailroxas@gmail.com>2014-04-11 23:58:36 +0300
committerJari Vetoniemi <mailroxas@gmail.com>2014-04-11 23:58:36 +0300
commit5a0a2659edbaaede9bed08c431013230a0e11122 (patch)
tree02f3ed28e6e9df3c2f07b80641fd76e01b06fc5b /lib
parent3c6e167578b1842d53219c143aa2e6fda22ad482 (diff)
downloadbemenu-5a0a2659edbaaede9bed08c431013230a0e11122.tar.gz
bemenu-5a0a2659edbaaede9bed08c431013230a0e11122.tar.bz2
bemenu-5a0a2659edbaaede9bed08c431013230a0e11122.zip
Cleanup dmenu filter.
Diffstat (limited to 'lib')
-rw-r--r--lib/filter.c14
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;
}
/**