diff --git a/wiretap/file_access.c b/wiretap/file_access.c index 329e5875b4..5b3e75ea61 100644 --- a/wiretap/file_access.c +++ b/wiretap/file_access.c @@ -2718,6 +2718,20 @@ wtap_dump_file_tell(wtap_dumper *wdh, int *err) } } +void +cleanup_open_routines(void) +{ + guint i; + struct open_info *i_open; + + for (i = 0, i_open = open_routines; i < open_info_arr->len; i++, i_open++) { + if (i_open->extensions != NULL) + g_strfreev(i_open->extensions_set); + } + + g_array_free(open_info_arr, TRUE); +} + /* * Editor modelines - http://www.wireshark.org/tools/modelines.html * diff --git a/wiretap/wtap.c b/wiretap/wtap.c index 6473d43ee9..0f13e6b788 100644 --- a/wiretap/wtap.c +++ b/wiretap/wtap.c @@ -1444,6 +1444,7 @@ wtap_cleanup(void) wtap_cleanup_encap_types(); wtap_opttypes_cleanup(); ws_buffer_cleanup(); + cleanup_open_routines(); } /* diff --git a/wiretap/wtap.h b/wiretap/wtap.h index d1ed5d7577..c94371a854 100644 --- a/wiretap/wtap.h +++ b/wiretap/wtap.h @@ -1448,6 +1448,8 @@ typedef enum { WS_DLL_PUBLIC void init_open_routines(void); +void cleanup_open_routines(void); + struct open_info { const char *name; wtap_open_type type;