The counter was increased even if the UID was already in recent_flags.
This is the only place where I found that recent_flags and
recent_flags_count could become desynced (which they definitely were in
a core dump), so hopefully this fixes assert-crashes like:
Panic: file index-status.c: line 130 (index_storage_get_open_status): assertion failed: (status_r->recent <= status_r->messages)
{
box->recent_flags_prev_uid = uid;
- seq_range_array_add_with_init(&box->recent_flags, 64, uid);
- box->recent_flags_count++;
+ if (!mailbox_recent_flags_have_uid(box, uid)) {
+ seq_range_array_add_with_init(&box->recent_flags, 64, uid);
+ box->recent_flags_count++;
+ }
}
void mailbox_recent_flags_set_seqs(struct mailbox *box,