struct maildir_uidlist_rec uid_rec;
const char *fname, **new_files;
void *orig_key, *orig_value;
- unsigned int seq, last_uid, i;
+ unsigned int seq, uid, last_uid, i;
buffer_t *buf;
seq = 0;
}
while (rec != NULL) {
- seq++;
+ seq++; uid = rec->uid;
/* skip over the expunged records in uidlist */
- while (uid_rec.uid != 0 && uid_rec.uid < rec->uid) {
+ while (uid_rec.uid != 0 && uid_rec.uid < uid) {
uidlist->rewrite = TRUE;
if (!maildir_uidlist_next(uidlist, &uid_rec))
return FALSE;
return FALSE;
}
- if (uid_rec.uid != 0 &&
+ if (uid_rec.uid == uid &&
maildir_cmp(fname, uid_rec.filename) != 0) {
index_set_corrupted(index, "Filename mismatch for UID "
- "%u: %s vs %s", rec->uid, fname,
+ "%u: %s vs %s", uid, fname,
uid_rec.filename);
return FALSE;
}
i_unreached();
}
- if (uid_rec.uid != 0) {
+ if (uid_rec.uid != 0 && uid_rec.uid <= uid) {
if (maildir_uidlist_next(uidlist, &uid_rec) < 0)
return FALSE;
}