Mercurial > dovecot > core-2.2
changeset 13682:0a3eafad58c0
maildir: When renaming filename due to broken size, don't forget message flags.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 09 Nov 2011 12:55:37 +0200 |
parents | 12bd19be1315 |
children | b29d9d98f5c0 |
files | src/lib-storage/index/maildir/maildir-mail.c |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-mail.c Wed Nov 09 00:10:07 2011 +0200 +++ b/src/lib-storage/index/maildir/maildir-mail.c Wed Nov 09 12:55:37 2011 +0200 @@ -618,7 +618,7 @@ { struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->box; enum maildir_uidlist_rec_flag flags; - const char *subdir, *fname, *path, *newpath, *p; + const char *subdir, *fname, *path, *newpath, *p, *fname_info; uoff_t size; char wrong_key; @@ -647,8 +647,12 @@ return; } - newpath = t_strdup_printf("%s/%s/%s", mailbox_get_path(&mbox->box), - subdir, t_strdup_until(fname, p)); + fname_info = strchr(fname, MAILDIR_INFO_SEP); + if (fname_info == NULL) + fname_info = ""; + + newpath = t_strdup_printf("%s/%s/%s%s", mailbox_get_path(&mbox->box), + subdir, t_strdup_until(fname, p), fname_info); if (rename(path, newpath) == 0) { mail_storage_set_critical(mail->box->storage, "Maildir filename has wrong %c value, "