changeset 9063:172cfd750a40 HEAD

SEARCH INTREAD: Crashfix when deinitializing.
author Timo Sirainen <tss@iki.fi>
date Tue, 19 May 2009 14:48:08 -0400
parents 694714d59cd9
children d936c8e243dd
files src/lib-storage/mail-search.c
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/mail-search.c	Tue May 19 13:37:31 2009 -0400
+++ b/src/lib-storage/mail-search.c	Tue May 19 14:48:08 2009 -0400
@@ -150,13 +150,13 @@
 			break;
 		case SEARCH_INTHREAD:
 			i_assert(arg->value.search_args->refcount > 0);
-			arg->value.search_args->refcount--;
-			arg->value.search_args->box = NULL;
 			if (args->refcount == 0 &&
 			    arg->value.search_result != NULL) {
 				mailbox_search_result_free(
 					&arg->value.search_result);
 			}
+			arg->value.search_args->refcount--;
+			arg->value.search_args->box = NULL;
 			/* fall through */
 		case SEARCH_SUB:
 		case SEARCH_OR:
@@ -251,11 +251,14 @@
 	new_arg->type = arg->type;
 	new_arg->not = arg->not;
 	new_arg->match_always = arg->match_always;
+	new_arg->value.search_flags = arg->value.search_flags;
 
 	switch (arg->type) {
+	case SEARCH_INTHREAD:
+		new_arg->value.thread_type = arg->value.thread_type;
+		/* fall through */
 	case SEARCH_OR:
 	case SEARCH_SUB:
-	case SEARCH_INTHREAD:
 		new_arg->value.subargs =
 			mail_search_arg_dup(pool, arg->value.subargs);
 		break;