From: Austin Clements <amdragon@MIT.EDU>
Date: Sun, 22 Apr 2012 15:50:52 +0000 (-0400)
Subject: new: Fix missing end_atomic in remove_filename on error
X-Git-Tag: 0.13_rc1~66
X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=2e7b6494046342872f1f79418679b1554d6d1005;p=notmuch-old

new: Fix missing end_atomic in remove_filename on error

Previously, if we failed to find the message by filename in
remove_filename, we would return immediately from the function without
ending its atomic block.  Now this code follows the usual goto DONE
idiom to perform cleanup.
---

diff --git a/notmuch-new.c b/notmuch-new.c
index bf9b1209..473201e9 100644
--- a/notmuch-new.c
+++ b/notmuch-new.c
@@ -779,7 +779,8 @@ remove_filename (notmuch_database_t *notmuch,
 	return status;
     status = notmuch_database_find_message_by_filename (notmuch, path, &message);
     if (status || message == NULL)
-	return status;
+	goto DONE;
+
     status = notmuch_database_remove_message (notmuch, path);
     if (status == NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID) {
 	add_files_state->renamed_messages++;
@@ -790,6 +791,8 @@ remove_filename (notmuch_database_t *notmuch,
 	add_files_state->removed_messages++;
     }
     notmuch_message_destroy (message);
+
+  DONE:
     notmuch_database_end_atomic (notmuch);
     return status;
 }