]> git.notmuchmail.org Git - notmuch/blobdiff - lib/message.cc
Add a missing print after catching an exception.
[notmuch] / lib / message.cc
index e0b8a8e111925342e82d38d26ff8064b551915f0..4a5fae1e5901f584bdddcdd52bb9563aea585d5d 100644 (file)
@@ -168,9 +168,15 @@ _notmuch_message_create_for_message_id (notmuch_database_t *notmuch,
 {
     notmuch_message_t *message;
     Xapian::Document doc;
+    Xapian::WritableDatabase *db;
     unsigned int doc_id;
     char *term;
 
+    if (notmuch->mode == NOTMUCH_DATABASE_MODE_READ_ONLY) {
+       *status_ret = NOTMUCH_PRIVATE_STATUS_READONLY_DATABASE;
+       return NULL;
+    }
+
     *status_ret = NOTMUCH_PRIVATE_STATUS_SUCCESS;
 
     message = notmuch_database_find_message (notmuch, message_id);
@@ -184,14 +190,17 @@ _notmuch_message_create_for_message_id (notmuch_database_t *notmuch,
        return NULL;
     }
 
+    db = static_cast<Xapian::WritableDatabase *> (notmuch->xapian_db);
     try {
        doc.add_term (term);
        talloc_free (term);
 
        doc.add_value (NOTMUCH_VALUE_MESSAGE_ID, message_id);
 
-       doc_id = notmuch->xapian_db->add_document (doc);
+       doc_id = db->add_document (doc);
     } catch (const Xapian::Error &error) {
+       fprintf (stderr, "A Xapian exception occurred creating message: %s\n",
+                error.get_msg().c_str());
        *status_ret = NOTMUCH_PRIVATE_STATUS_XAPIAN_EXCEPTION;
        return NULL;
     }
@@ -543,8 +552,12 @@ _notmuch_message_ensure_thread_id (notmuch_message_t *message)
 void
 _notmuch_message_sync (notmuch_message_t *message)
 {
-    Xapian::WritableDatabase *db = message->notmuch->xapian_db;
+    Xapian::WritableDatabase *db;
+
+    if (message->notmuch->mode == NOTMUCH_DATABASE_MODE_READ_ONLY)
+       return;
 
+    db = static_cast <Xapian::WritableDatabase *> (message->notmuch->xapian_db);
     db->replace_document (message->doc_id, message->doc);
 }