aboutsummaryrefslogtreecommitdiff
path: root/lib/add-message.cc
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2020-07-26 20:31:36 -0300
committerDavid Bremner <david@tethera.net>2020-07-28 08:47:58 -0300
commita09293793f43b93b7008dd361b192199ad528fca (patch)
tree3655943388b32c142f8783df12368863d5783b18 /lib/add-message.cc
parentd7d4c729ab3b74eaaebe64cb8c7383b0ea06cec0 (diff)
lib: replace use of static_cast for writable databases
static_cast is a bit tricky to understand and error prone, so add a second pointer to (potentially the same) Xapian database object that we know has the right subclass.
Diffstat (limited to 'lib/add-message.cc')
-rw-r--r--lib/add-message.cc13
1 files changed, 3 insertions, 10 deletions
diff --git a/lib/add-message.cc b/lib/add-message.cc
index 9dd4b697..485debad 100644
--- a/lib/add-message.cc
+++ b/lib/add-message.cc
@@ -43,15 +43,12 @@ _notmuch_database_generate_thread_id (notmuch_database_t *notmuch)
/* 16 bytes (+ terminator) for hexadecimal representation of
* a 64-bit integer. */
static char thread_id[17];
- Xapian::WritableDatabase *db;
-
- db = static_cast <Xapian::WritableDatabase *> (notmuch->xapian_db);
notmuch->last_thread_id++;
sprintf (thread_id, "%016" PRIx64, notmuch->last_thread_id);
- db->set_metadata ("last_thread_id", thread_id);
+ notmuch->writable_xapian_db->set_metadata ("last_thread_id", thread_id);
return thread_id;
}
@@ -161,7 +158,7 @@ _resolve_message_id_to_thread_id_old (notmuch_database_t *notmuch,
* can return the thread ID stored in the metadata. Otherwise, we
* generate a new thread ID and store it there.
*/
- db = static_cast <Xapian::WritableDatabase *> (notmuch->xapian_db);
+ db = notmuch->writable_xapian_db;
metadata_key = _get_metadata_thread_id_key (ctx, message_id);
thread_id_string = notmuch->xapian_db->get_metadata (metadata_key);
@@ -370,13 +367,9 @@ _consume_metadata_thread_id (void *ctx, notmuch_database_t *notmuch,
if (stored_id.empty ()) {
return NULL;
} else {
- Xapian::WritableDatabase *db;
-
- db = static_cast <Xapian::WritableDatabase *> (notmuch->xapian_db);
-
/* Clear the metadata for this message ID. We don't need it
* anymore. */
- db->set_metadata (metadata_key, "");
+ notmuch->writable_xapian_db->set_metadata (metadata_key, "");
return talloc_strdup (ctx, stored_id.c_str ());
}