}
/* 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.
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. */
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",
i.skip_to (prefix);
- while (1) {
+ while (i != end) {
tag = *i;
if (tag.empty () || tag[0] != *prefix)
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