projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix possible memory corruption when creating dialogs with selectors.
[pspp]
/
src
/
ui
/
gui
/
psppire-buttonbox.c
diff --git
a/src/ui/gui/psppire-buttonbox.c
b/src/ui/gui/psppire-buttonbox.c
index ac40058dba77a0c219185c1bd89c78497647b8b2..24d82d27d3ac9a9b2e139cf2306880c98dd4bb81 100644
(file)
--- a/
src/ui/gui/psppire-buttonbox.c
+++ b/
src/ui/gui/psppire-buttonbox.c
@@
-215,6
+215,14
@@
close_and_respond (GtkWidget *w, gint response)
psppire_dialog_close (dialog);
}
psppire_dialog_close (dialog);
}
+static gboolean
+is_acceptable (GtkWidget *w)
+{
+ GtkWidget *toplevel = gtk_widget_get_toplevel (w);
+
+ return (PSPPIRE_IS_DIALOG (toplevel)
+ && psppire_dialog_is_acceptable (PSPPIRE_DIALOG (toplevel)));
+}
static void
close_dialog (GtkWidget *w, gpointer data)
static void
close_dialog (GtkWidget *w, gpointer data)
@@
-225,27
+233,31
@@
close_dialog (GtkWidget *w, gpointer data)
static void
continue_button_clicked (GtkWidget *w, gpointer data)
{
static void
continue_button_clicked (GtkWidget *w, gpointer data)
{
- close_and_respond (w, PSPPIRE_RESPONSE_CONTINUE);
+ if (is_acceptable (w))
+ close_and_respond (w, PSPPIRE_RESPONSE_CONTINUE);
}
static void
ok_button_clicked (GtkWidget *w, gpointer data)
{
}
static void
ok_button_clicked (GtkWidget *w, gpointer data)
{
- close_and_respond (w, GTK_RESPONSE_OK);
+ if (is_acceptable (w))
+ close_and_respond (w, GTK_RESPONSE_OK);
}
static void
paste_button_clicked (GtkWidget *w, gpointer data)
{
}
static void
paste_button_clicked (GtkWidget *w, gpointer data)
{
- close_and_respond (w, PSPPIRE_RESPONSE_PASTE);
+ if (is_acceptable (w))
+ close_and_respond (w, PSPPIRE_RESPONSE_PASTE);
}
static void
goto_button_clicked (GtkWidget *w, gpointer data)
{
}
static void
goto_button_clicked (GtkWidget *w, gpointer data)
{
- close_and_respond (w, PSPPIRE_RESPONSE_GOTO);
+ if (is_acceptable (w))
+ close_and_respond (w, PSPPIRE_RESPONSE_GOTO);
}
}