diff --git a/lib/message.cc b/lib/message.cc index 4e1be986..bb4b2fa1 100644 --- a/lib/message.cc +++ b/lib/message.cc @@ -1732,7 +1732,8 @@ _ensure_maildir_flags (notmuch_message_t *message, bool force) message->maildir_flags = NULL; } } - + /* n_m_get_filenames returns NULL for errors, which terminates the + * loop */ for (filenames = notmuch_message_get_filenames (message); notmuch_filenames_valid (filenames); notmuch_filenames_move_to_next (filenames)) { diff --git a/test/T560-lib-error.sh b/test/T560-lib-error.sh index 36c4c1ce..02478e92 100755 --- a/test/T560-lib-error.sh +++ b/test/T560-lib-error.sh @@ -533,4 +533,20 @@ cat < EXPECTED EOF test_expect_equal_file EXPECTED OUTPUT +test_begin_subtest "Handle read maildir flag with closed database" +cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} + { + notmuch_bool_t is_set = -1; + is_set = notmuch_message_has_maildir_flag (message, 'S'); + printf("%d\n%d\n", message != NULL, is_set == FALSE || is_set == TRUE); + } +EOF +cat < EXPECTED +== stdout == +1 +1 +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + test_done