Fix some possible crashes if the default display is NULL

Unlikely that many people will hit these, but still.
https://bugzilla.gnome.org/show_bug.cgi?id=645176
This commit is contained in:
Matthias Clasen 2011-04-08 21:20:26 -04:00
parent 32358a58f4
commit 9e6d3d969c
3 changed files with 9 additions and 3 deletions

View File

@ -134,7 +134,8 @@ gdk_display_class_init (GdkDisplayClass *class)
static void static void
free_pointer_info (GdkPointerWindowInfo *info) free_pointer_info (GdkPointerWindowInfo *info)
{ {
g_object_unref (info->toplevel_under_pointer); if (info->toplevel_under_pointer)
g_object_unref (info->toplevel_under_pointer);
g_slice_free (GdkPointerWindowInfo, info); g_slice_free (GdkPointerWindowInfo, info);
} }

View File

@ -605,6 +605,8 @@ gdk_event_copy (const GdkEvent *event)
void void
gdk_event_free (GdkEvent *event) gdk_event_free (GdkEvent *event)
{ {
GdkDisplay *display;
g_return_if_fail (event != NULL); g_return_if_fail (event != NULL);
if (event->any.window) if (event->any.window)
@ -670,7 +672,9 @@ gdk_event_free (GdkEvent *event)
break; break;
} }
_gdk_display_event_data_free (gdk_display_get_default (), event); display = gdk_display_get_default ();
if (display)
_gdk_display_event_data_free (display, event);
g_hash_table_remove (event_hash, event); g_hash_table_remove (event_hash, event);
g_slice_free (GdkEventPrivate, (GdkEventPrivate*) event); g_slice_free (GdkEventPrivate, (GdkEventPrivate*) event);

View File

@ -77,7 +77,8 @@ gdk_x11_display_manager_set_default_display (GdkDisplayManager *manager,
{ {
GDK_X11_DISPLAY_MANAGER (manager)->default_display = display; GDK_X11_DISPLAY_MANAGER (manager)->default_display = display;
_gdk_x11_display_make_default (display); if (display)
_gdk_x11_display_make_default (display);
} }
static void static void