From: Carl Worth Date: Tue, 27 Oct 2009 23:19:20 +0000 (-0700) Subject: notmuch_database_add_message: Do not return a message on failure. X-Git-Tag: 0.1~677 X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=203a717d64864411eb6802c06a5a0ad1cf98e077;ds=sidebyside notmuch_database_add_message: Do not return a message on failure. The recent, disastrous failure of "notmuch new" would have been avoided with this change. The new_command function was basically assuming that it would only get a message object on success so wasn't destroying the message in the other cases. --- diff --git a/database.cc b/database.cc index 8d477eca..0fd0bdad 100644 --- a/database.cc +++ b/database.cc @@ -836,6 +836,9 @@ notmuch_database_add_message (notmuch_database_t *notmuch, const char *from, *to, *subject, *old_filename; char *message_id; + if (message_ret) + *message_ret = NULL; + message_file = notmuch_message_file_open (filename); if (message_file == NULL) { ret = NOTMUCH_STATUS_FILE_ERROR; @@ -932,7 +935,7 @@ notmuch_database_add_message (notmuch_database_t *notmuch, DONE: if (message) { - if (message_ret) + if (ret == NOTMUCH_STATUS_SUCCESS && message_ret) *message_ret = message; else notmuch_message_destroy (message); diff --git a/notmuch.h b/notmuch.h index 7e83d239..f4e59ab2 100644 --- a/notmuch.h +++ b/notmuch.h @@ -252,10 +252,11 @@ notmuch_database_get_timestamp (notmuch_database_t *database, * reference the filename, and will not copy the entire contents of * the file. * - * If 'message' is not NULL, then '*message' will be initialized to a - * message object that can be used for things such as adding tags to - * the just-added message. The user should call - * notmuch_message_destroy when done with the message. + * If 'message' is not NULL, then, on successful return '*message' + * will be initialized to a message object that can be used for things + * such as adding tags to the just-added message. The user should call + * notmuch_message_destroy when done with the message. On any failure + * '*message' will be set to NULL. * * Return value: *