aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDario Lombardo <lomato@gmail.com>2017-02-03 23:15:56 +0100
committerMichael Mann <mmann78@netscape.net>2017-02-10 13:34:56 +0000
commit9ced31a2d7a78e22454aba5fa1a0f2655e2a57cf (patch)
treee9aab4f6751f3c9c187b805a23138278e3ff154c
parent59fc668845e57cf988226c3c19984c8bd83458d3 (diff)
filter_list: add cleanup function and call it on exit.
Change-Id: I51d8074cc5a63d4fd3af8852df120d6b4163217f Reviewed-on: https://code.wireshark.org/review/19942 Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r--filter_files.c17
-rw-r--r--filter_files.h5
-rw-r--r--sharkd.c1
-rw-r--r--tshark.c1
-rw-r--r--ui/gtk/main.c1
-rw-r--r--ui/qt/wireshark_application.cpp5
-rw-r--r--ui/qt/wireshark_application.h1
7 files changed, 31 insertions, 0 deletions
diff --git a/filter_files.c b/filter_files.c
index 739712f38b..566c48e8e4 100644
--- a/filter_files.c
+++ b/filter_files.c
@@ -90,6 +90,23 @@ add_filter_entry(GList *fl, const char *filt_name, const char *filt_expr)
return g_list_append(fl, filt);
}
+static void
+free_filter_entry(gpointer data)
+{
+ filter_def *filt = (filter_def*)data;
+ g_free(filt->name);
+ g_free(filt->strval);
+ g_free(filt);
+}
+
+void free_filter_lists(void)
+{
+ g_list_free_full(capture_filters, free_filter_entry);
+ g_list_free_full(display_filters, free_filter_entry);
+ g_list_free_full(capture_edited_filters, free_filter_entry);
+ g_list_free_full(display_edited_filters, free_filter_entry);
+}
+
static GList *
remove_filter_entry(GList *fl, GList *fl_entry)
{
diff --git a/filter_files.h b/filter_files.h
index b63ddca2ba..9907fe7513 100644
--- a/filter_files.h
+++ b/filter_files.h
@@ -89,6 +89,11 @@ void save_filter_list(filter_list_type_t list_type, char **pref_path_return,
*/
void copy_filter_list(filter_list_type_t dest_type, filter_list_type_t src_type);
+/*
+ * Free all filter lists
+ */
+void free_filter_lists(void);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/sharkd.c b/sharkd.c
index 51ad753082..dae6111d9c 100644
--- a/sharkd.c
+++ b/sharkd.c
@@ -298,6 +298,7 @@ main(int argc, char *argv[])
ret = sharkd_loop();
clean_exit:
col_cleanup(&cfile.cinfo);
+ free_filter_lists();
return ret;
}
diff --git a/tshark.c b/tshark.c
index d883e02d9b..8570d3497f 100644
--- a/tshark.c
+++ b/tshark.c
@@ -2201,6 +2201,7 @@ clean_exit:
capture_opts_cleanup(&global_capture_opts);
#endif
col_cleanup(&cfile.cinfo);
+ free_filter_lists();
return exit_status;
}
diff --git a/ui/gtk/main.c b/ui/gtk/main.c
index b62ffd35b9..ff2751ea5b 100644
--- a/ui/gtk/main.c
+++ b/ui/gtk/main.c
@@ -2815,6 +2815,7 @@ clean_exit:
capture_opts_cleanup(&global_capture_opts);
#endif
col_cleanup(&cfile.cinfo);
+ free_filter_lists();
return ret;
}
diff --git a/ui/qt/wireshark_application.cpp b/ui/qt/wireshark_application.cpp
index f9bcfd7a83..a136bc3d74 100644
--- a/ui/qt/wireshark_application.cpp
+++ b/ui/qt/wireshark_application.cpp
@@ -716,6 +716,11 @@ WiresharkApplication::WiresharkApplication(int &argc, char **argv) :
connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(cleanup()));
}
+WiresharkApplication::~WiresharkApplication()
+{
+ free_filter_lists();
+}
+
void WiresharkApplication::registerUpdate(register_action_e action, const char *message)
{
emit splashUpdate(action, message);
diff --git a/ui/qt/wireshark_application.h b/ui/qt/wireshark_application.h
index 9decb77f28..c4b4b786d2 100644
--- a/ui/qt/wireshark_application.h
+++ b/ui/qt/wireshark_application.h
@@ -60,6 +60,7 @@ class WiresharkApplication : public QApplication
Q_OBJECT
public:
explicit WiresharkApplication(int &argc, char **argv);
+ ~WiresharkApplication();
enum AppSignal {
CaptureFilterListChanged,