Explorar el Código

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

remove bogus strfcpy() line

Michael Elkins hace 23 años
padre
commit
2f2b123d71
Se han modificado 2 ficheros con 10 adiciones y 1 borrados
  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);
+	    }
 	}
     }