[evolution-data-server/imapx-extensible: 4/10] CamelIMAPXServer: do not hide possible programming issue
- From: Christian Hilberg <chilberg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/imapx-extensible: 4/10] CamelIMAPXServer: do not hide possible programming issue
- Date: Tue, 26 Jun 2012 14:42:43 +0000 (UTC)
commit ca6a7ccf91d49031daa341268261769f5f9c2ac2
Author: Christian Hilberg <chilberg src gnome org>
Date: Thu Jun 14 16:56:46 2012 +0200
CamelIMAPXServer: do not hide possible programming issue
* do not free the CamelIMAPXServer private context
structure at the beginning of imapx_untagged()
as it is expected to be NULL
* if it isn't, the function got called concurrently
for the same CamelIMAPXServer instance, in which
case we need special locking mechanisms anyway
* thanks to Milan Crha for pointing this out
camel/camel-imapx-server.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
---
diff --git a/camel/camel-imapx-server.c b/camel/camel-imapx-server.c
index 0c7568c..20abae1 100644
--- a/camel/camel-imapx-server.c
+++ b/camel/camel-imapx-server.c
@@ -1914,8 +1914,12 @@ imapx_untagged (CamelIMAPXServer *is,
settings = camel_service_get_settings (service);
priv = CAMEL_IMAPX_SERVER_GET_PRIVATE (is);
- if (priv->context != NULL)
- g_free (priv->context);
+ /* If priv->context is not NULL here, it basically means that
+ * imapx_untagged() got called concurrently for the same
+ * CamelIMAPXServer instance. Should this ever happen, then
+ * we will need to protect this data structure with locks
+ */
+ g_return_val_if_fail (priv->context == NULL, FALSE);
priv->context = g_new0 (CamelIMAPXServerUntaggedContext, 1);
priv->context->lsub = FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]