فهرست منبع

sync_mailbox() did not update the msg struct when flags were changed,
causing the expunge command to fail

remove bogus strfcpy() line

Michael Elkins 23 سال پیش
والد
کامیت
2f2b123d71
2فایلهای تغییر یافته به همراه10 افزوده شده و 1 حذف شده
  1. 0 1
      maildir.c
  2. 10 0
      sync.c

+ 0 - 1
maildir.c

@@ -278,7 +278,6 @@ maildir_open (const char *path, int flags)
 	    /* determine the UID for this message.  The basename (sans
 	     * flags) is used as the key in the db
 	     */
-	    strfcpy (buf, p->file, sizeof (buf));
 	    key.dptr = p->file;
 	    s = strchr (key.dptr, ':');
 	    key.dsize = s ? (size_t) (s - key.dptr) : strlen (key.dptr);

+ 10 - 0
sync.c

@@ -220,7 +220,17 @@ sync_mailbox (mailbox_t * mbox, imap_t * imap, int flags,
 		      (cur->flags & D_DELETED) ? "T" : "");
 
 	    if (rename (path, newpath))
+	    {
 		perror ("rename");
+		return -1;
+	    }
+	    else
+	    {
+		    /* update the filename in the msg struct */
+		    p=strrchr(newpath,'/');
+		    free(cur->file);
+		    cur->file=strdup(p+1);
+	    }
 	}
     }