Prechádzať zdrojové kódy

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 rokov pred
rodič
commit
2f2b123d71
2 zmenil súbory, kde vykonal 10 pridanie a 1 odobranie
  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);
+	    }
 	}
     }