lib/n_m_g_filename: catch Xapian exceptions, document NULL return
authorDavid Bremner <david@tethera.net>
Sat, 4 Jul 2020 12:20:31 +0000 (09:20 -0300)
committerDavid Bremner <david@tethera.net>
Mon, 13 Jul 2020 10:19:22 +0000 (07:19 -0300)
This is the same machinery as applied for

     notmuch_message_get_{thread,message}_id

lib/message.cc
lib/notmuch.h
test/T560-lib-error.sh

index 0551a4279cab3b5ebcaaff1de638033d502e2c43..1a9eaffe05e44bca5ba50f83484a2301ca81bd2e 100644 (file)
@@ -1122,7 +1122,12 @@ _notmuch_message_ensure_filename_list (notmuch_message_t *message)
 const char *
 notmuch_message_get_filename (notmuch_message_t *message)
 {
-    _notmuch_message_ensure_filename_list (message);
+    try {
+       _notmuch_message_ensure_filename_list (message);
+    } catch (Xapian::Error &error) {
+       LOG_XAPIAN_EXCEPTION (message, error);
+       return NULL;
+    }
 
     if (message->filename_list == NULL)
        return NULL;
index 037913f40303e0153db912e1e5d883530b6ffe78..5c17ec7cbb3329e229021f04722c3c7c3cbba65e 100644 (file)
@@ -1433,6 +1433,8 @@ notmuch_message_count_files (notmuch_message_t *message);
  * this function will arbitrarily return a single one of those
  * filenames. See notmuch_message_get_filenames for returning the
  * complete list of filenames.
+ *
+ * This function returns NULL if it triggers a Xapian exception.
  */
 const char *
 notmuch_message_get_filename (notmuch_message_t *message);
index 7555197f3fbfdaf86f2835f4b2f4405e11ff531f..57c74a2b1eb2e8a95f6f4833730a420305c3f40c 100755 (executable)
@@ -406,7 +406,6 @@ EOF
 test_expect_equal_file EXPECTED OUTPUT
 
 test_begin_subtest "Handle getting message filename from closed database"
-test_subtest_known_broken
 cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR}
     {
         const char *filename;