[PATCH 08/66] kconfig: gconf: always destroy dialog in on_window1_delete_event()

From: Masahiro Yamada
Date: Tue Jun 24 2025 - 11:10:18 EST


When gtk_dialog_run() returns GTK_RESPONSE_YES or GTK_RESPONSE_NO,
gtk_widget_destroy() is not called, resulting is 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@xxxxxxxxxx>
---

scripts/kconfig/gconf.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c
index 769f38307f34..52d439a5119b 100644
--- a/scripts/kconfig/gconf.c
+++ b/scripts/kconfig/gconf.c
@@ -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;
}


--
2.43.0