summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStef Walter <stefw@gnome.org>2012-06-28 14:41:39 +0200
committerStef Walter <stefw@gnome.org>2012-06-28 14:43:12 +0200
commit1ae30806403e556c8297a16a25a18687d9e80f89 (patch)
tree65459123ce0f3c0df57762f359fcbf30ea5b33a6
parent139c1ce9884a91be167ab9d48d3c4b0df89dd112 (diff)
downloadglib-1ae30806403e556c8297a16a25a18687d9e80f89.tar.gz
GTlsInteraction: Fix incorrect locking of mutex
* Fix incorrect locking of mutex in g_tls_interaction_invoke_ask_password() https://bugzilla.gnome.org/show_bug.cgi?id=678758
-rw-r--r--gio/gtlsinteraction.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gio/gtlsinteraction.c b/gio/gtlsinteraction.c
index 41574b7cc..e921b815d 100644
--- a/gio/gtlsinteraction.c
+++ b/gio/gtlsinteraction.c
@@ -321,6 +321,7 @@ g_tls_interaction_invoke_ask_password (GTlsInteraction *interaction,
GTlsInteractionResult result;
InvokeClosure *closure;
GTlsInteractionClass *klass;
+ gboolean complete;
g_return_val_if_fail (G_IS_TLS_INTERACTION (interaction), G_TLS_INTERACTION_UNHANDLED);
g_return_val_if_fail (G_IS_TLS_PASSWORD (password), G_TLS_INTERACTION_UNHANDLED);
@@ -348,12 +349,16 @@ g_tls_interaction_invoke_ask_password (GTlsInteraction *interaction,
*/
if (g_main_context_acquire (interaction->priv->context))
{
- while (!closure->complete)
+ for (;;)
{
+ g_mutex_lock (&closure->mutex);
+ complete = closure->complete;
g_mutex_unlock (&closure->mutex);
+ if (complete)
+ break;
g_main_context_iteration (interaction->priv->context, TRUE);
- g_mutex_lock (&closure->mutex);
}
+
g_main_context_release (interaction->priv->context);
if (closure->error)