]> git.cworth.org Git - notmuch/blobdiff - lib/thread.cc
Fix "too many open files" bug by closing message files when done with them.
[notmuch] / lib / thread.cc
index e38a5b2e0abc336bd16fe03de8cb82902abd984d..baa9e7e84e78ee082703447a0b2cb0386bb89ea8 100644 (file)
@@ -207,6 +207,7 @@ _notmuch_thread_create (void *ctx,
     const char *thread_id_query_string, *matched_query_string;
     notmuch_query_t *thread_id_query, *matched_query;
     notmuch_messages_t *messages;
+    notmuch_message_t *message;
 
     thread_id_query_string = talloc_asprintf (ctx, "thread:%s", thread_id);
     if (unlikely (query_string == NULL))
@@ -263,7 +264,9 @@ _notmuch_thread_create (void *ctx,
         notmuch_messages_has_more (messages);
         notmuch_messages_advance (messages))
     {
-       _thread_add_message (thread, notmuch_messages_get (messages));
+       message = notmuch_messages_get (messages);
+       _thread_add_message (thread, message);
+       _notmuch_message_close (message);
     }
 
     notmuch_query_destroy (thread_id_query);
@@ -272,7 +275,9 @@ _notmuch_thread_create (void *ctx,
         notmuch_messages_has_more (messages);
         notmuch_messages_advance (messages))
     {
-       _thread_add_matched_message (thread, notmuch_messages_get (messages));
+       message = notmuch_messages_get (messages);
+       _thread_add_matched_message (thread, message);
+       _notmuch_message_close (message);
     }
 
     notmuch_query_destroy (matched_query);