From 8dc58cb2d354ff31f17c707fabf2f6d078b40c17 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Thu, 21 Jan 1999 06:24:09 +0000 Subject: Move not-null assertion before pointer de-ref. * gdk/gdkdnd.c (gdk_drag_context_unref): Move not-null assertion before pointer de-ref. * gdk/gdkevents.c (gdk_event_queue_find_first): Fix infinite loop bug. Someone should look at this further to make sure the events_pending tests are correct. --- gdk/gdkdnd.c | 5 +++-- gdk/gdkevents.c | 4 +++- gdk/x11/gdkdnd-x11.c | 5 +++-- gdk/x11/gdkevents-x11.c | 4 +++- 4 files changed, 12 insertions(+), 6 deletions(-) (limited to 'gdk') diff --git a/gdk/gdkdnd.c b/gdk/gdkdnd.c index c3fdaa58be..b2653628a5 100644 --- a/gdk/gdkdnd.c +++ b/gdk/gdkdnd.c @@ -131,10 +131,11 @@ void gdk_drag_context_unref (GdkDragContext *context) { GdkDragContextPrivate *private = (GdkDragContextPrivate *)context; - private->ref_count--; - + g_return_if_fail (context != NULL); + private->ref_count--; + if (private->ref_count == 0) { g_dataset_destroy (private); diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c index 5eb1b7815b..75dd891ddd 100644 --- a/gdk/gdkevents.c +++ b/gdk/gdkevents.c @@ -153,9 +153,11 @@ gdk_event_queue_find_first (void) while (tmp_list) { - GdkEventPrivate *event = queued_events->data; + GdkEventPrivate *event = tmp_list->data; if (!(event->flags & GDK_EVENT_PENDING)) return tmp_list; + + tmp_list = g_list_next (tmp_list); } return NULL; diff --git a/gdk/x11/gdkdnd-x11.c b/gdk/x11/gdkdnd-x11.c index c3fdaa58be..b2653628a5 100644 --- a/gdk/x11/gdkdnd-x11.c +++ b/gdk/x11/gdkdnd-x11.c @@ -131,10 +131,11 @@ void gdk_drag_context_unref (GdkDragContext *context) { GdkDragContextPrivate *private = (GdkDragContextPrivate *)context; - private->ref_count--; - + g_return_if_fail (context != NULL); + private->ref_count--; + if (private->ref_count == 0) { g_dataset_destroy (private); diff --git a/gdk/x11/gdkevents-x11.c b/gdk/x11/gdkevents-x11.c index 5eb1b7815b..75dd891ddd 100644 --- a/gdk/x11/gdkevents-x11.c +++ b/gdk/x11/gdkevents-x11.c @@ -153,9 +153,11 @@ gdk_event_queue_find_first (void) while (tmp_list) { - GdkEventPrivate *event = queued_events->data; + GdkEventPrivate *event = tmp_list->data; if (!(event->flags & GDK_EVENT_PENDING)) return tmp_list; + + tmp_list = g_list_next (tmp_list); } return NULL; -- cgit v1.2.1