[evolution-data-server] Bug 627609 - imapx user_flags memory leak in imapx_untagged()



commit 00e24150751ae15fa9ad13631ac02eaa0126712e
Author: Chenthill Palanisamy <pchenthill novell com>
Date:   Mon Aug 30 17:42:59 2010 +0530

    Bug 627609 - imapx user_flags memory leak in imapx_untagged()

 camel/providers/imapx/camel-imapx-server.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
---
diff --git a/camel/providers/imapx/camel-imapx-server.c b/camel/providers/imapx/camel-imapx-server.c
index 4408e09..6b606bb 100644
--- a/camel/providers/imapx/camel-imapx-server.c
+++ b/camel/providers/imapx/camel-imapx-server.c
@@ -1456,6 +1456,7 @@ imapx_untagged(CamelIMAPXServer *imap, GError **error)
 					guint32 server_flags;
 					CamelFlag *server_user_flags;
 					CamelMessageInfoBase *binfo;
+					gboolean free_user_flags = FALSE;
 
 					mi->uid = camel_pstring_strdup (finfo->uid);
 
@@ -1494,6 +1495,7 @@ imapx_untagged(CamelIMAPXServer *imap, GError **error)
 						server_user_flags = finfo->user_flags;
 						/* free user_flags ? */
 						finfo->user_flags = NULL;
+						free_user_flags = TRUE;
 					}
 
 					/* If the message is a really new one -- equal or higher than what
@@ -1533,6 +1535,10 @@ imapx_untagged(CamelIMAPXServer *imap, GError **error)
 							camel_operation_progress (job->op, cnt?cnt:1);
 						}
 					}
+
+					if (free_user_flags && server_user_flags)
+						camel_flag_list_free (&server_user_flags);
+
 				}
 			}
 		}
@@ -3546,6 +3552,7 @@ cleanup:
 	for (i=0;i<infos->len;i++) {
 		struct _refresh_info *r = &g_array_index(infos, struct _refresh_info, i);
 
+		camel_flag_list_free (&r->server_user_flags);
 		g_free(r->uid);
 	}
 	g_array_free(job->u.refresh_info.infos, TRUE);
@@ -3730,6 +3737,7 @@ imapx_job_scan_changes_done(CamelIMAPXServer *is, CamelIMAPXCommand *ic)
 	for (i=0;i<infos->len;i++) {
 		struct _refresh_info *r = &g_array_index(infos, struct _refresh_info, i);
 
+		camel_flag_list_free (&r->server_user_flags);
 		g_free(r->uid);
 	}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]