From: Ben Pfaff Date: Wed, 7 May 2008 00:16:51 +0000 (+0000) Subject: (get_tooltip_location): Prevent crash when a tooltip is being prepared X-Git-Tag: v0.6.0~22 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1704b725af8798d00a87b7a4bed86fde902462e3;p=pspp-builds.git (get_tooltip_location): Prevent crash when a tooltip is being prepared when the assistant is closed. --- diff --git a/src/ui/gui/ChangeLog b/src/ui/gui/ChangeLog index 31c6b3bf..2110403d 100644 --- a/src/ui/gui/ChangeLog +++ b/src/ui/gui/ChangeLog @@ -1,3 +1,11 @@ +2008-05-06 Ben Pfaff + + Bug #23127. Reviewed by John Darrington. Tested by Jason Stover, + in an earlier form. + + * text-data-import-dialog.c (get_tooltip_location): Prevent crash + when a tooltip is being prepared when the assistant is closed. + 2008-05-06 Ben Pfaff * text-data-import-dialog.c (text_data_import_assistant): Allocate diff --git a/src/ui/gui/text-data-import-dialog.c b/src/ui/gui/text-data-import-dialog.c index 9c984d41..7598ba98 100644 --- a/src/ui/gui/text-data-import-dialog.c +++ b/src/ui/gui/text-data-import-dialog.c @@ -1808,6 +1808,19 @@ get_tooltip_location (GtkWidget *widget, gint wx, gint wy, GtkTreeModel *tree_model; bool ok; + /* Check that WIDGET is really visible on the screen before we + do anything else. This is a bug fix for a sticky situation: + when text_data_import_assistant() returns, it frees the data + necessary to compose the tool tip message, but there may be + a tool tip under preparation at that point (even if there is + no visible tool tip) that will call back into us a little + bit later. Perhaps the correct solution to this problem is + to make the data related to the tool tips part of a GObject + that only gets destroyed when all references are released, + but this solution appears to be effective too. */ + if (!GTK_WIDGET_MAPPED (widget)) + return FALSE; + gtk_tree_view_convert_widget_to_bin_window_coords (tree_view, wx, wy, &bx, &by); if (!gtk_tree_view_get_path_at_pos (tree_view, bx, by,