From fd0a1d0af48392c459fd04ce1f213965f1b6af0d Mon Sep 17 00:00:00 2001 From: Petr Vorel Date: Tue, 4 Mar 2014 00:31:04 +0100 Subject: [PATCH] fix segfault while cancel rename dialog Patch prevents calling gtk_widget_destroy(gd->dialog) twice - second is in generic_dialog_click_cb:58 Steps to reproduce: select more images on left section then is seen in on page (need to scroll), roll to the top, click by right mouse button, select Rename from menu and cancel it by key Esc (button Cancel is working). Program received signal SIGSEGV, Segmentation fault. 0x00007ffff79b2b16 in gtk_widget_destroy () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (gdb) bt #0 0x00007ffff79b2b16 in gtk_widget_destroy () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #1 0x0000000000429c6f in generic_dialog_close (gd=0x118d700) at ui_utildlg.c:44 #2 0x0000000000429cf2 in generic_dialog_click_cb (widget=0xb12220, data=0x118d700) at ui_utildlg.c:58 #3 0x0000000000429e4a in generic_dialog_key_press_cb (widget=0xb12220, event=0x11f0800, data=0x118d700) at ui_utildlg.c:93 #4 0x00007ffff78942bc in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #5 0x00007ffff6123f28 in g_closure_invoke () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #6 0x00007ffff6134edd in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #7 0x00007ffff613c922 in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #8 0x00007ffff613cf32 in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #9 0x00007ffff79b4664 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #10 0x00007ffff78927cf in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #11 0x00007ffff7893f95 in gtk_main_do_event () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #12 0x00007ffff74cee12 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 #13 0x00007ffff5e5cea6 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #14 0x00007ffff5e5d1f8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #15 0x00007ffff5e5d5fa in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #16 0x00007ffff789344d in gtk_main () from /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 #17 0x0000000000492cf1 in main (argc=2, argv=0x7fffffffd4c8) at main.c:921 --- src/ui_utildlg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui_utildlg.c b/src/ui_utildlg.c index 108c1218..c4bfaaf9 100644 --- a/src/ui_utildlg.c +++ b/src/ui_utildlg.c @@ -90,7 +90,7 @@ static gboolean generic_dialog_key_press_cb(GtkWidget *widget, GdkEventKey *even if (event->keyval == GDK_KEY_Escape) { if (gd->cancel_cb) gd->cancel_cb(gd, gd->data); - if (gd->auto_close) generic_dialog_click_cb(widget, data); + else if (gd->auto_close) generic_dialog_click_cb(widget, data); return TRUE; } return FALSE; -- 2.20.1