From 69988b0395128a07d8b374f5c48a694c28825003 Mon Sep 17 00:00:00 2001 From: Andrew Borodin Date: Fri, 5 Mar 2010 22:45:16 +0300 Subject: [PATCH] Fixed memory leaks in viewer. Free viewer resources before quit from viewer. Signed-off-by: Andrew Borodin --- src/viewer/dialogs.c | 8 ++------ src/viewer/lib.c | 10 +++++++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/viewer/dialogs.c b/src/viewer/dialogs.c index edc178a8d..f34cab6d7 100644 --- a/src/viewer/dialogs.c +++ b/src/viewer/dialogs.c @@ -138,12 +138,8 @@ mcview_dialog_search (mcview_t * view) g_free (view->last_search_string); view->last_search_string = exp; - - if (view->search_nroff_seq != NULL) - mcview_nroff_seq_free (&(view->search_nroff_seq)); - - if (view->search != NULL) - mc_search_free (view->search); + mcview_nroff_seq_free (&view->search_nroff_seq); + mc_search_free (view->search); view->search = mc_search_new (view->last_search_string, -1); view->search_nroff_seq = mcview_nroff_seq_new (view); diff --git a/src/viewer/lib.c b/src/viewer/lib.c index 6982b8f32..86c8b6cb7 100644 --- a/src/viewer/lib.c +++ b/src/viewer/lib.c @@ -191,12 +191,20 @@ mcview_done (mcview_t * view) coord_cache_free (view->coord_cache), view->coord_cache = NULL; - if (!(view->converter == INVALID_CONV || view->converter != str_cnv_from_term)) + if (view->converter == INVALID_CONV) + view->converter = str_cnv_from_term; + + if (view->converter != str_cnv_from_term) { str_close_conv (view->converter); view->converter = str_cnv_from_term; } + mc_search_free (view->search); + view->search = NULL; + g_free (view->last_search_string); + view->last_search_string = NULL; + mcview_nroff_seq_free (&view->search_nroff_seq); mcview_hexedit_free_change_list (view); } -- 2.11.4.GIT