From d549e52b93f71a0d0395367a06ed618a189e4522 Mon Sep 17 00:00:00 2001 From: Michael Olson Date: Sat, 3 Jan 2009 23:05:42 +0000 Subject: [PATCH] Gnus: Fix edge cases with no data being returned and Courier eccentricity. * lisp/gnus/nnimap.el (nnimap-retrieve-headers-progress): Handle edge case where `headers' is nil. This can occur if the IMAP server does not have permissions to read messages from a folder, but can write new messages to the folder. (nnimap-request-article-part): Do not insert `data' if it is nil. * lisp/net/imap.el (imap-parse-fetch): Courier can insert spurious blank characters which will confuse `read', so skip past them. --- lisp/gnus/nnimap.el | 9 +++++---- lisp/net/imap.el | 4 +++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index e0bb5ad48f2..a38d35444a3 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -620,7 +620,7 @@ If EXAMINE is non-nil the group is selected read-only." ;; to make it more clear. (mm-with-unibyte-buffer (buffer-disable-undo) - (insert headers) + (when headers (insert headers)) (let ((head (nnheader-parse-naked-head uid))) (mail-header-set-number head uid) (mail-header-set-chars head chars) @@ -950,9 +950,10 @@ function is generally only called when Gnus is shutting down." (erase-buffer) (let ((data (imap-fetch article part prop nil nnimap-server-buffer))) - (insert (nnimap-demule (if detail - (nth 2 (car data)) - data)))) + (when data + (insert (nnimap-demule (if detail + (nth 2 (car data)) + data))))) (nnheader-ms-strip-cr) (gnus-message 10 "nnimap: Fetching (part of) article %d from %s...done" diff --git a/lisp/net/imap.el b/lisp/net/imap.el index 6726bfda200..85afffc100b 100644 --- a/lisp/net/imap.el +++ b/lisp/net/imap.el @@ -2493,7 +2493,9 @@ Return nil if no complete line has arrived." (when (eq (char-after) ?\() (let (uid flags envelope internaldate rfc822 rfc822header rfc822text rfc822size body bodydetail bodystructure flags-empty) - (while (not (eq (char-after) ?\))) + (while (let ((moved (skip-chars-forward " \t"))) + (prog1 (not (eq (char-after) ?\))) + (unless (= moved 0) (backward-char)))) (imap-forward) (let ((token (read (current-buffer)))) (imap-forward) -- 2.39.2