changeset 8472:ae30ea8532ee HEAD

Changed mail_user refcounting to fix deinitialization.
author Timo Sirainen <tss@iki.fi>
date Fri, 21 Nov 2008 21:19:16 +0200
parents f82ba0d5ed30
children 81bc28227b6c
files src/lib-storage/mail-namespace.c
diffstat 1 files changed, 1 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/mail-namespace.c	Fri Nov 21 19:56:42 2008 +0200
+++ b/src/lib-storage/mail-namespace.c	Fri Nov 21 21:19:16 2008 +0200
@@ -29,7 +29,7 @@
 
 static void mail_namespace_free(struct mail_namespace *ns)
 {
-	if (ns->owner != NULL)
+	if (ns->owner != ns->user && ns->owner != NULL)
 		mail_user_unref(&ns->owner);
 	i_free(ns->prefix);
 	i_free(ns);
@@ -65,7 +65,6 @@
 	if (type == NULL || *type == '\0' || strncmp(type, "private", 7) == 0) {
 		ns->type = NAMESPACE_PRIVATE;
 		ns->owner = user;
-		mail_user_ref(ns->owner);
 	} else if (strncmp(type, "shared", 6) == 0)
 		ns->type = NAMESPACE_SHARED;
 	else if (strncmp(type, "public", 6) == 0)
@@ -252,7 +251,6 @@
 	ns->prefix = i_strdup("");
 	ns->user = user;
 	ns->owner = user;
-	mail_user_ref(ns->owner);
 
 	if (mail_storage_create(ns, NULL, mail, flags, lock_method,
 				&error) < 0) {
@@ -283,7 +281,6 @@
 	ns = i_new(struct mail_namespace, 1);
 	ns->user = user;
 	ns->owner = user;
-	mail_user_ref(ns->owner);
 	ns->prefix = i_strdup("");
 	ns->flags = NAMESPACE_FLAG_INBOX | NAMESPACE_FLAG_LIST_PREFIX |
 		NAMESPACE_FLAG_SUBSCRIPTIONS;