summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTillmann Karras <tilkax@gmail.com>2013-12-05 03:59:00 +0100
committerTillmann Karras <tilkax@gmail.com>2013-12-05 03:59:00 +0100
commitffaab4ebfa0e1715c350629b97f2110ea14cbcf5 (patch)
tree0e4992226cee2dbc428e2915096cc83f112ec889
parent3fd238a0f3156c0127860ce203b73f7f180261f6 (diff)
Fix memleak when closing a listing while searching
-rw-r--r--src/ui_util.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/ui_util.c b/src/ui_util.c
index b3318b5..85e74b5 100644
--- a/src/ui_util.c
+++ b/src/ui_util.c
@@ -1069,9 +1069,6 @@ struct ui_listing_t {
const char *(*to_string)(GSequenceIter *);
}
-// does not free the GSequence (we don't control the list, after all)
-#define ui_listing_free(ul) g_slice_free(ui_listing_t, ul)
-
#endif
@@ -1179,6 +1176,13 @@ ui_listing_t *ui_listing_create(GSequence *list, gboolean (*skip)(ui_listing_t *
}
+void ui_listing_free(ui_listing_t *ul) {
+ if(ul->query)
+ ui_textinput_free(ul->query);
+ g_slice_free(ui_listing_t, ul);
+}
+
+
static void ui_listing_search(ui_listing_t *ul, guint64 key) {
char *complete_query = NULL;
ui_textinput_key(ul->query, key, &complete_query);
@@ -1226,7 +1230,7 @@ gboolean ui_listing_key(ui_listing_t *ul, guint64 key, int page) {
}
switch(key) {
- case INPT_CHAR('/'):
+ case INPT_CHAR('/'): // go into search mode
if(ul->to_string) {
ul->query = ui_textinput_create(FALSE, NULL);
ul->regex_status = REGEX_MATCH;