From: Colin Clark Date: Sat, 16 Jul 2022 10:29:50 +0000 (+0100) Subject: Fix #982: random crash (SIGSEGV) while running two instances of geeqie X-Git-Tag: gtk2final^0 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=5ef5596d879a28a9876271fb2d54e1021430aba7 Fix #982: random crash (SIGSEGV) while running two instances of geeqie https://github.com/BestImageViewer/geeqie/issues/982 User reports this fix works. --- diff --git a/src/advanced_exif.c b/src/advanced_exif.c index 0c9e4d6a..a6851ade 100644 --- a/src/advanced_exif.c +++ b/src/advanced_exif.c @@ -280,18 +280,25 @@ void advanced_exif_close(ExifWin *ew) if (!ew) return; advanced_exif_window_get_geometry(ew); + file_data_unref(ew->fd); gtk_widget_destroy(ew->window); + + g_free(ew); } -static void advanced_exif_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data) +static gboolean advanced_exif_delete_cb(GtkWidget *widget, GdkEvent *event, gpointer data) { ExifWin *ew = data; - advanced_exif_window_get_geometry(ew); + if (!ew) return FALSE; + advanced_exif_window_get_geometry(ew); file_data_unref(ew->fd); + g_free(ew); + + return FALSE; } static gint advanced_exif_sort_cb(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data) diff --git a/src/layout_util.c b/src/layout_util.c index e77b8c0e..60b53124 100644 --- a/src/layout_util.c +++ b/src/layout_util.c @@ -4167,10 +4167,12 @@ void layout_bars_close(LayoutWindow *lw) layout_bar_close(lw); } -static void layout_exif_window_destroy(GtkWidget *widget, gpointer data) +static gboolean layout_exif_window_destroy(GtkWidget *widget, gpointer data) { LayoutWindow *lw = data; lw->exif_window = NULL; + + return TRUE; } void layout_exif_window_new(LayoutWindow *lw)