[glib/glib-2-20] Fix a locking problem in g_main_context_iterate()
- From: Matthias Clasen <matthiasc src gnome org>
- To: svn-commits-list gnome org
- Subject: [glib/glib-2-20] Fix a locking problem in g_main_context_iterate()
- Date: Fri, 29 May 2009 01:30:09 -0400 (EDT)
commit 1f32eb927e2b404d4a697fa55282425ccb4d1784
Author: Matthias Clasen <mclasen redhat com>
Date: Wed May 27 12:01:14 2009 -0400
Fix a locking problem in g_main_context_iterate()
We failed to ensure that the context is locked on every exit of
the function. This fixes bug 583324.
---
glib/gmain.c | 15 ++++++---------
1 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/glib/gmain.c b/glib/gmain.c
index 17866c7..331c0a8 100644
--- a/glib/gmain.c
+++ b/glib/gmain.c
@@ -2382,33 +2382,30 @@ g_main_context_iterate (GMainContext *context,
gboolean some_ready;
gint nfds, allocated_nfds;
GPollFD *fds = NULL;
-
+
UNLOCK_CONTEXT (context);
#ifdef G_THREADS_ENABLED
if (!g_main_context_acquire (context))
{
gboolean got_ownership;
-
+
+ LOCK_CONTEXT (context);
+
g_return_val_if_fail (g_thread_supported (), FALSE);
if (!block)
return FALSE;
- LOCK_CONTEXT (context);
-
if (!context->cond)
context->cond = g_cond_new ();
-
+
got_ownership = g_main_context_wait (context,
context->cond,
g_static_mutex_get_mutex (&context->mutex));
if (!got_ownership)
- {
- UNLOCK_CONTEXT (context);
- return FALSE;
- }
+ return FALSE;
}
else
LOCK_CONTEXT (context);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]