On 2018-07-23 20:47:34 -0700, Kevin J. McCarthy wrote:
> On Tue, Jul 24, 2018 at 04:47:43AM +0200, Vincent Lefevre wrote:
> > On 2018-07-22 09:54:44 -0700, Kevin J. McCarthy wrote:
> > > I think the second time is okay. The routine is just resorting, and
> > > updating the virtual and v2r fields with the assumption that the actual
> > > visible headers hasn't changed.
> >
> > mutt_sort_headers can be called in mbox_sync_mailbox after the
> > mailbox has been reopened:
> >
> > if (need_sort)
> > /* if the mailbox was reopened, the thread tree will be invalid so make
> > * sure to start threading from scratch. */
> > mutt_sort_headers (ctx, (need_sort == MUTT_REOPENED));
>
> Unless I'm missing something, this looks redundant - for the case where
> mbox_check_mailbox() returns new mail or reopen.
Yes, according to debug messages, it seems that there are redundant
mutt_sort_headers calls.
> OP_MAIN_SYNC_FOLDER will end up calling update_index() for either of
> those cases, which will both perform the sort and update vcount/vsize.
>
> OP_QUIT and OP_MAIN_CHANGE_FOLDER do the same thing.
>
> But I do notice OP_MAIN_IMAP_LOGOUT_ALL neglected to, and should be fixed.
I don't use IMAP, so that I've never done any check with it.
> > While testing, I've noticed an unrelated bug:
> >
> > ---Mutt: =test2 [Msg:46/46 Inc:10
> > 202K/203K]---(date)---------------------(end)-
> >
> > All messages are visible in the limited view, but vsize is different
> > from the full size. This is not consistent. This happens when starting
> > Mutt on this mailbox and selecting a limited view.
>
> A quick test didn't show me the problem, so I'll have to play around
> with this.
This occurs when the size of the mbox file is a bit less than a
multiple of 1024. I assume that the bug is present for any size,
but due to rounding, one needs some specific values modulo 1024.
This occurs also with only 1 message; see attached mbox file,
whose size if 973 bytes. There is a 1-byte discrepancy (perhaps
1 per message in the more general case).
In mx.c, vsize is computed as follows:
ctx->vsize += this_body->length + this_body->offset -
this_body->hdr_offset;
Ditto in pattern.c:
Context->vsize += this_body->length + this_body->offset -
this_body->hdr_offset;
But perhaps the issue comes from the fact that after each message
in an mbox file there must be a newline and it is not included in
length.
This problem doesn't occur with maildir.
--
Vincent Lefèvre <[email protected]> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)
>From [email protected] Tue Jul 24 10:58:59 2018
From: [email protected]
Subject: test
1. Open this mbox file with Mutt.
2. set status_format="%?L?%L/?%l"
3. Limit to ..
Result: 0.9K/1.0K
Additional text to make the size of the mbox file equal to 973:
...............................................................
...............................................................
...............................................................
...............................................................
...............................................................
...............................................................
...............................................................
...............................................................
...............................................................
...............................................................
...............................................................
..........................