diff -up mutt-1.5.21/imap/message.c.hdrcnt mutt-1.5.21/imap/message.c --- mutt-1.5.21/imap/message.c.hdrcnt 2010-08-24 18:34:21.000000000 +0200 +++ mutt-1.5.21/imap/message.c 2011-04-01 15:23:14.254360560 +0200 @@ -65,7 +65,7 @@ int imap_read_headers (IMAP_DATA* idata, char *hdrreq = NULL; FILE *fp; char tempfile[_POSIX_PATH_MAX]; - int msgno, idx; + int msgno, idx = msgbegin - 1; IMAP_HEADER h; IMAP_STATUS* status; int rc, mfhrc, oldmsgcount; @@ -185,7 +185,7 @@ int imap_read_headers (IMAP_DATA* idata, continue; } - idx = h.sid - 1; + idx++; ctx->hdrs[idx] = imap_hcache_get (idata, h.data->uid); if (ctx->hdrs[idx]) { @@ -273,13 +273,14 @@ int imap_read_headers (IMAP_DATA* idata, { dprint (2, (debugfile, "msg_fetch_header: ignoring fetch response with no body\n")); mfhrc = -1; + msgend--; continue; } /* make sure we don't get remnants from older larger message headers */ fputs ("\n\n", fp); - idx = h.sid - 1; + idx++; if (idx > msgend) { dprint (1, (debugfile, "imap_read_headers: skipping FETCH response for "