diff options
author | Stef Walter <stefw@gnome.org> | 2012-06-28 14:41:39 +0200 |
---|---|---|
committer | Stef Walter <stefw@gnome.org> | 2012-06-28 14:43:12 +0200 |
commit | 1ae30806403e556c8297a16a25a18687d9e80f89 (patch) | |
tree | 65459123ce0f3c0df57762f359fcbf30ea5b33a6 | |
parent | 139c1ce9884a91be167ab9d48d3c4b0df89dd112 (diff) | |
download | glib-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.c | 9 |
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) |