diff options
author | Dario Lombardo <lomato@gmail.com> | 2017-02-03 23:15:56 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-02-10 13:34:56 +0000 |
commit | 9ced31a2d7a78e22454aba5fa1a0f2655e2a57cf (patch) | |
tree | e9aab4f6751f3c9c187b805a23138278e3ff154c | |
parent | 59fc668845e57cf988226c3c19984c8bd83458d3 (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.c | 17 | ||||
-rw-r--r-- | filter_files.h | 5 | ||||
-rw-r--r-- | sharkd.c | 1 | ||||
-rw-r--r-- | tshark.c | 1 | ||||
-rw-r--r-- | ui/gtk/main.c | 1 | ||||
-rw-r--r-- | ui/qt/wireshark_application.cpp | 5 | ||||
-rw-r--r-- | ui/qt/wireshark_application.h | 1 |
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 */ @@ -298,6 +298,7 @@ main(int argc, char *argv[]) ret = sharkd_loop(); clean_exit: col_cleanup(&cfile.cinfo); + free_filter_lists(); return ret; } @@ -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, |