]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
kconfig: gconf: always destroy dialog in on_window1_delete_event()
authorMasahiro Yamada <masahiroy@kernel.org>
Tue, 24 Jun 2025 15:04:56 +0000 (00:04 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Tue, 1 Jul 2025 11:07:25 +0000 (20:07 +0900)
When gtk_dialog_run() returns GTK_RESPONSE_YES or GTK_RESPONSE_NO,
gtk_widget_destroy() is not called, resulting in a memory leak.

It is better to always destroy the dialog, even if the application
is about to exit.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
scripts/kconfig/gconf.c

index 769f38307f34f68af98f879a4efcc9e8adea1c33..52d439a5119bd53c78c1fc3a596b5a49a20a5aec 100644 (file)
@@ -378,6 +378,7 @@ gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event,
 {
        GtkWidget *dialog, *label;
        gint result;
+       gint ret = FALSE;
 
        if (!conf_get_changed())
                return FALSE;
@@ -404,17 +405,19 @@ gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event,
        switch (result) {
        case GTK_RESPONSE_YES:
                on_save_activate(NULL, NULL);
-               return FALSE;
+               break;
        case GTK_RESPONSE_NO:
-               return FALSE;
+               break;
        case GTK_RESPONSE_CANCEL:
        case GTK_RESPONSE_DELETE_EVENT:
        default:
-               gtk_widget_destroy(dialog);
-               return TRUE;
+               ret = TRUE;
+               break;
        }
 
-       return FALSE;
+       gtk_widget_destroy(dialog);
+
+       return ret;
 }