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.
This commit is contained in:
Carl Worth 2009-10-27 16:19:20 -07:00
parent 854f82fb91
commit 203a717d64
2 changed files with 9 additions and 5 deletions

View file

@ -836,6 +836,9 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
const char *from, *to, *subject, *old_filename; const char *from, *to, *subject, *old_filename;
char *message_id; char *message_id;
if (message_ret)
*message_ret = NULL;
message_file = notmuch_message_file_open (filename); message_file = notmuch_message_file_open (filename);
if (message_file == NULL) { if (message_file == NULL) {
ret = NOTMUCH_STATUS_FILE_ERROR; ret = NOTMUCH_STATUS_FILE_ERROR;
@ -932,7 +935,7 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
DONE: DONE:
if (message) { if (message) {
if (message_ret) if (ret == NOTMUCH_STATUS_SUCCESS && message_ret)
*message_ret = message; *message_ret = message;
else else
notmuch_message_destroy (message); notmuch_message_destroy (message);

View file

@ -252,10 +252,11 @@ notmuch_database_get_timestamp (notmuch_database_t *database,
* reference the filename, and will not copy the entire contents of * reference the filename, and will not copy the entire contents of
* the file. * the file.
* *
* If 'message' is not NULL, then '*message' will be initialized to a * If 'message' is not NULL, then, on successful return '*message'
* message object that can be used for things such as adding tags to * will be initialized to a message object that can be used for things
* the just-added message. The user should call * such as adding tags to the just-added message. The user should call
* notmuch_message_destroy when done with the message. * notmuch_message_destroy when done with the message. On any failure
* '*message' will be set to NULL.
* *
* Return value: * Return value:
* *