X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Fmessage.cc;h=41dddd077ea9939d703e95f0606dc1bfc023f053;hb=52292c548512214fd3dd205edb4ca9cf7955f2b3;hp=cb9026439b75647486e4e2b3953da53a8b924e2f;hpb=f7eaeff242dd08c4020401c3b2e2e1ad2f769fe0;p=notmuch diff --git a/lib/message.cc b/lib/message.cc index cb902643..41dddd07 100644 --- a/lib/message.cc +++ b/lib/message.cc @@ -146,7 +146,7 @@ _notmuch_message_create (const void *talloc_owner, } /* Create a new notmuch_message_t object for a specific message ID, - * (which may or may not already exist in the databas). + * (which may or may not already exist in the database). * * The 'notmuch' database will be the talloc owner of the returned * message. @@ -285,7 +285,8 @@ _notmuch_message_get_in_reply_to (notmuch_message_t *message) i = message->doc.termlist_begin (); i.skip_to (prefix); - in_reply_to = *i; + if (i != message->doc.termlist_end ()) + in_reply_to = *i; /* It's perfectly valid for a message to have no In-Reply-To * header. For these cases, we return an empty string. */ @@ -332,10 +333,10 @@ notmuch_message_get_thread_id (notmuch_message_t *message) return message->thread_id; i = message->doc.termlist_begin (); - i.skip_to (prefix); - id = *i; + if (i != message->doc.termlist_end ()) + id = *i; if (i == message->doc.termlist_end () || id[0] != *prefix) INTERNAL_ERROR ("Message with document ID of %d has no thread ID.\n", @@ -466,7 +467,7 @@ notmuch_message_get_tags (notmuch_message_t *message) i.skip_to (prefix); - while (1) { + while (i != end) { tag = *i; if (tag.empty () || tag[0] != *prefix) @@ -547,6 +548,19 @@ _notmuch_message_sync (notmuch_message_t *message) db->replace_document (message->doc_id, message->doc); } +/* Ensure that 'message' is not holding any file object open. Future + * calls to various functions will still automatically open the + * message file as needed. + */ +void +_notmuch_message_close (notmuch_message_t *message) +{ + if (message->message_file) { + notmuch_message_file_close (message->message_file); + message->message_file = NULL; + } +} + /* Add a name:value term to 'message', (the actual term will be * encoded by prefixing the value with a short prefix). See * NORMAL_PREFIX and BOOLEAN_PREFIX arrays for the mapping of term