lib: handle xapian exception in n_m_remove_all_tags

At least the exception we already catch should be reported properly.
This commit is contained in:
David Bremner 2020-07-08 21:17:04 -03:00
parent a4ac9941a8
commit a2b90dc084
3 changed files with 11 additions and 6 deletions

View file

@ -2071,16 +2071,20 @@ notmuch_message_remove_all_tags (notmuch_message_t *message)
status = _notmuch_database_ensure_writable (message->notmuch); status = _notmuch_database_ensure_writable (message->notmuch);
if (status) if (status)
return status; return status;
tags = notmuch_message_get_tags (message);
if (! tags)
return NOTMUCH_STATUS_XAPIAN_EXCEPTION;
for (tags = notmuch_message_get_tags (message); for (;
notmuch_tags_valid (tags); notmuch_tags_valid (tags);
notmuch_tags_move_to_next (tags)) { notmuch_tags_move_to_next (tags)) {
tag = notmuch_tags_get (tags); tag = notmuch_tags_get (tags);
private_status = _notmuch_message_remove_term (message, "tag", tag); private_status = _notmuch_message_remove_term (message, "tag", tag);
if (private_status) { if (private_status) {
INTERNAL_ERROR ("_notmuch_message_remove_term return unexpected value: %d\n", return COERCE_STATUS (private_status,
private_status); "_notmuch_message_remove_term return unexpected value: %d\n",
private_status);
} }
} }

View file

@ -1635,8 +1635,10 @@ notmuch_message_remove_tag (notmuch_message_t *message, const char *tag);
* See notmuch_message_freeze for an example showing how to safely * See notmuch_message_freeze for an example showing how to safely
* replace tag values. * replace tag values.
* *
* NOTMUCH_STATUS_READ_ONLY_DATABASE: Database was opened in read-only * @retval #NOTMUCH_STATUS_READ_ONLY_DATABASE: Database was opened in
* mode so message cannot be modified. * read-only mode so message cannot be modified.
* @retval #NOTMUCH_STATUS_XAPIAN_EXCEPTION: an execption was thrown
* accessing the database.
*/ */
notmuch_status_t notmuch_status_t
notmuch_message_remove_all_tags (notmuch_message_t *message); notmuch_message_remove_all_tags (notmuch_message_t *message);

View file

@ -583,7 +583,6 @@ EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "Handle removing all tags with closed db" test_begin_subtest "Handle removing all tags with closed db"
test_subtest_known_broken
cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR} cat c_head2 - c_tail <<'EOF' | test_C ${MAIL_DIR}
{ {
notmuch_status_t status; notmuch_status_t status;