X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Fmessage.cc;h=24e698ab11dfbff7c5fbed56cb26c47e2f7fc4ce;hb=e954310d70674a439a50cf4c699467567095b057;hp=b940453859f3f754c1c347246b96601840fd4d9b;hpb=1695415039803fd3b317bccbb3ceca0472bed373;p=notmuch diff --git a/lib/message.cc b/lib/message.cc index b9404538..24e698ab 100644 --- a/lib/message.cc +++ b/lib/message.cc @@ -13,7 +13,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/ . + * along with this program. If not, see https://www.gnu.org/licenses/ . * * Author: Carl Worth */ @@ -1098,6 +1098,26 @@ _notmuch_message_delete (notmuch_message_t *message) notmuch_message_destroy (ghost); status = COERCE_STATUS (private_status, "Error converting to ghost message"); + } else { + /* the thread is empty; drop all ghost messages from it */ + notmuch_messages_t *messages; + status = _notmuch_query_search_documents (query, + "ghost", + &messages); + if (status == NOTMUCH_STATUS_SUCCESS) { + notmuch_status_t last_error = NOTMUCH_STATUS_SUCCESS; + while (notmuch_messages_valid (messages)) { + message = notmuch_messages_get (messages); + status = _notmuch_message_delete (message); + if (status) /* we'll report the last failure we see; + * if there is more than one failure, we + * forget about previous ones */ + last_error = status; + notmuch_message_destroy (message); + notmuch_messages_move_to_next (messages); + } + status = last_error; + } } notmuch_query_destroy (query); return status; @@ -1424,7 +1444,7 @@ notmuch_message_maildir_flags_to_tags (notmuch_message_t *message) for (i = 0; i < ARRAY_SIZE(flag2tag); i++) { if ((strchr (combined_flags, flag2tag[i].flag) != NULL) - ^ + ^ flag2tag[i].inverse) { status = notmuch_message_add_tag (message, flag2tag[i].tag);