GNU bug report logs - #34387
26.1; Gnus: handle empty message parts

Previous Next

Package: emacs;

Reported by: Christophe Troestler <Christophe.Troestler <at> umons.ac.be>

Date: Fri, 8 Feb 2019 15:00:02 UTC

Severity: normal

Found in version 26.1

Done: Katsumi Yamaoka <yamaoka <at> jpl.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 34387 in the body.
You can then email your comments to 34387 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#34387; Package emacs. (Fri, 08 Feb 2019 15:00:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Christophe Troestler <Christophe.Troestler <at> umons.ac.be>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 08 Feb 2019 15:00:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Christophe Troestler <Christophe.Troestler <at> umons.ac.be>
To: <bug-gnu-emacs <at> gnu.org>
Subject: 26.1; Gnus: handle empty message parts
Date: Fri, 8 Feb 2019 15:58:19 +0100
Hi,

Some messages only contain an attachment (no body) and (gnus-article-prepare-display) choke on the empty part.  More specifically, `gnus-mime-display-single' does (narrow-to-region beg (point)) which fails if the part is empty.  An easy fix is to write

      (when (< beg (point))
        (narrow-to-region beg (point))
        (if (eq handle gnus-article-mime-handles)
          ...))



In GNU Emacs 26.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.2)
 of 2018-12-26, modified by Debian built on x86-ubc-01
Windowing system distributor 'The X.Org Foundation', version 11.0.12003000
System Description:	Debian GNU/Linux buster/sid

Recent messages:
(No changes need to be saved)
Mark set
Saved text from "(defun gnus-mime-display-single (handle)"
Mark set [2 times]
gnus-mime-display-single
Back to top level
Quit
gnus-mime-display-single
Mark saved where search started
Making completion list... [2 times]

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --enable-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/26.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/26.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --build
 x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/lib --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --enable-libsystemd
 --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/26.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/26.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --with-x=yes
 --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
 -fdebug-prefix-map=/build/emacs-3ThesY/emacs-26.1+1=. -fstack-protector-strong
 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 THREADS LIBSYSTEMD LCMS2

Important settings:
  value of $LC_MESSAGES: en_US.UTF-8
  value of $LC_NUMERIC: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: mu4e:view

Minor modes in effect:
  visual-fill-column-mode: t
  TeX-PDF-mode: t
  global-magit-file-mode: t
  diff-auto-refine-mode: t
  magit-auto-revert-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  shell-dirtrack-mode: t
  desktop-save-mode: t
  show-paren-mode: t
  global-edit-server-edit-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Load-path shadows:
~/software/OCaml/dune/editor-integration/emacs/dune-flymake hides /home/trch/.opam/4.06.1/share/emacs/site-lisp/dune-flymake
~/software/OCaml/dune/editor-integration/emacs/dune hides /home/trch/.opam/4.06.1/share/emacs/site-lisp/dune
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/deb-view hides /usr/share/emacs/site-lisp/elpa/debian-el-37/deb-view
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/debian-bug hides /usr/share/emacs/site-lisp/elpa/debian-el-37/debian-bug
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/apt-utils hides /usr/share/emacs/site-lisp/elpa/debian-el-37/apt-utils
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/preseed hides /usr/share/emacs/site-lisp/elpa/debian-el-37/preseed
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/apt-sources hides /usr/share/emacs/site-lisp/elpa/debian-el-37/apt-sources
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/debian-autoloads hides /usr/share/emacs/site-lisp/elpa/debian-el-37/debian-autoloads
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/debian-el hides /usr/share/emacs/site-lisp/elpa/debian-el-37/debian-el
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/debian-el-autoloads hides /usr/share/emacs/site-lisp/elpa/debian-el-37/debian-el-autoloads
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/gnus-BTS hides /usr/share/emacs/site-lisp/elpa/debian-el-37/gnus-BTS
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/debian-el-pkg hides /usr/share/emacs/site-lisp/elpa/debian-el-37/debian-el-pkg
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/deb-view hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/deb-view
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/apt-utils hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/apt-utils
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/preseed hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/preseed
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/debian-bug hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/debian-bug
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/apt-sources hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/apt-sources
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/debian-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/debian-autoloads
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/debian-el hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/debian-el
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/debian-el-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/debian-el-autoloads
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/gnus-BTS hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/gnus-BTS
/home/trch/.emacs.d/elpa/debian-el-20181020.1513/debian-el-pkg hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/debian-el-pkg

Features:
(shadow emacsbug network-stream starttls mailalias face-remap timezone
cl-print debug cus-start cus-load view cal-china lunar solar cal-dst
cal-islam holidays hol-loaddefs cal-move reftex-parse misearch
multi-isearch sh-script executable texmathp qp visual-fill-column sort
gnus-cite smiley shr-color color shr svg dom mm-archive mail-extr
make-mode org-rmail org-mhe org-irc org-info org-gnus nnir org-docview
org-bibtex org-bbdb org-w3m latexenc tuareg caml caml-help reftex-auc
preview prv-emacs tex-buf reftex-dcr reftex reftex-loaddefs reftex-vars
flyspell ispell latex latex-flymake tex-ispell tex-style tex-mode vc-git
elec-pair font-latex tex dbus xml bibtex dune-flymake flymake-proc
flymake compile warnings dune skeleton smie utop utop-minor-mode pcase
merlin-cap merlin caml-types caml-emacs magit-gh-pulls subr-x s gh
gh-users gh-issues gh-pulls gh-repos gh-comments gh-gist gh-oauth gh-api
logito gh-cache pcache eieio-base gh-auth gh-url url-http url url-proxy
url-privacy url-expand url-methods url-history url-auth url-cookie
url-domsuf url-util url-gw nsm gh-profile json map magit-submodule
magit-obsolete magit-blame magit-stash magit-bisect magit-push
magit-pull magit-fetch magit-clone magit-remote magit-commit
magit-sequence magit-notes magit-worktree magit-tag magit-merge
magit-branch magit-reset magit-files magit-refs magit-status magit
magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff
smerge-mode diff-mode magit-core magit-autorevert magit-process
magit-margin magit-mode git-commit magit-git magit-section magit-utils
magit-popup crm log-edit pcvs-util add-log with-editor cl-extra
async-bytecomp async shell dash erc-goodies erc erc-backend erc-compat
pp org-mu4e gnus-icalendar org-capture mu4e-contrib mu4e desktop
frameset mu4e-speedbar speedbar sb-image ezimage dframe mu4e-main
mu4e-view thingatpt browse-url gnus-art mm-uu mml2015 mm-view mml-smime
smime dig mailcap gnus-sum gnus-group gnus-undo gnus-start gnus-cloud
nnimap nnmail mail-source tls gnutls utf7 netrc nnoo parse-time
gnus-spec gnus-int gnus-range gnus-win gnus nnheader wid-edit
mu4e-headers mu4e-compose mu4e-context mu4e-draft mu4e-actions ido
rfc2368 smtpmail sendmail mu4e-mark mu4e-message flow-fill mu4e-proc
mu4e-utils doc-view jka-compr image-mode mu4e-lists mu4e-vars message
rmc puny dired dired-loaddefs rfc822 mml mml-sec gnus-util rmail
rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 ietf-drums mailabbrev mail-utils gmm-utils mailheader hl-line
mu4e-meta adoc-mode tempo markup-faces org-element avl-tree generator
org org-macro org-footnote org-pcomplete pcomplete org-list org-faces
org-entities noutline outline easy-mmode org-version ob-emacs-lisp ob
ob-tangle org-src ob-ref ob-lob ob-table ob-keys ob-exp ob-comint comint
ansi-color ring ob-core ob-eval org-compat org-macs org-loaddefs
format-spec find-func epa-file epa derived epg cl quail help-mode
mm-util mail-prsvr autorevert filenotify edmacro kmacro paren icalendar
diary-lib diary-loaddefs cal-menu calendar cal-loaddefs edit-server
advice server finder-inf rx tex-site debian-el gh-common marshal
eieio-compat info package easymenu epg-config url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv
cl-loaddefs cl-lib time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty
make-network-process emacs)

Memory information:
((conses 16 699181 113871)
 (symbols 48 59955 1)
 (miscs 40 3906 2143)
 (strings 32 212031 19012)
 (string-bytes 1 6376648)
 (vectors 16 80239)
 (vector-slots 8 2307806 160564)
 (floats 8 1465 2911)
 (intervals 56 9982 2963)
 (buffers 992 403))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#34387; Package emacs. (Fri, 08 Feb 2019 15:40:03 GMT) Full text and rfc822 format available.

Message #8 received at 34387 <at> debbugs.gnu.org (full text, mbox):

From: Christophe Troestler <Christophe.Troestler <at> umons.ac.be>
To: <34387 <at> debbugs.gnu.org>
Subject: Re: bug#34387: Acknowledgement (26.1;
 Gnus: handle empty message parts)
Date: Fri, 8 Feb 2019 16:39:47 +0100
For those who encounter this problem, a fix that does not require to modify the body of the function gnus-mime-display-single is:

(define-advice gnus-mime-display-single (:around (oldfn &rest handle) fix)
  "Protect against bad handling of empty message parts."
  (ignore-errors (apply oldfn handle)))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#34387; Package emacs. (Tue, 12 Feb 2019 04:35:01 GMT) Full text and rfc822 format available.

Message #11 received at 34387 <at> debbugs.gnu.org (full text, mbox):

From: Katsumi Yamaoka <yamaoka <at> jpl.org>
To: Christophe.Troestler <at> umons.ac.be
Cc: 34387 <at> debbugs.gnu.org
Subject: Re: bug#34387: 26.1; Gnus: handle empty message parts
Date: Tue, 12 Feb 2019 13:34:09 +0900
On Fri, 08 Feb 2019 15:58:19 +0100, Christophe Troestler wrote:
> Some messages only contain an attachment (no body) and
> (gnus-article-prepare-display) choke on the empty part.
> More specifically, `gnus-mime-display-single' does
> (narrow-to-region beg (point)) which fails if the part is empty.

Could you let me know how it fails?  Otherwise, could you show
me a sample email in question?  Unfortunately I'm not successful
in making such an email that causes the problem so far, and trying
(narrow-to-region beg beg) and (narrow-to-region (point) (point))
cause nothing special.

But I found at least two other kinds of problems in relation to
an empty attachment:

1. In the article buffer, pressing the RET key on an empty
 text/plain attachment conceals the succeeding other attachments,
 does not toggle.  `g' restores them of course, though.

2. Some kind of an empty mail isn't able to be edited using the
 `e' command (gnus-summary-edit-article), that is, a single part
 email whose body is an empty attachment.  Gnus misunderstands
 that the header is its body.

On Fri, 08 Feb 2019 16:39:47 +0100, Christophe Troestler wrote:
> For those who encounter this problem, a fix that does not require to
> modify the body of the function gnus-mime-display-single is:

> (define-advice gnus-mime-display-single (:around (oldfn &rest handle) fix)
>   "Protect against bad handling of empty message parts."
>   (ignore-errors (apply oldfn handle)))

I'd like to fix those problems in the Gnus code. :)

Thanks.
Regards,




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#34387; Package emacs. (Tue, 12 Feb 2019 07:32:01 GMT) Full text and rfc822 format available.

Message #14 received at 34387 <at> debbugs.gnu.org (full text, mbox):

From: Christophe Troestler <Christophe.Troestler <at> umons.ac.be>
To: Katsumi Yamaoka <yamaoka <at> jpl.org>
Cc: 34387 <at> debbugs.gnu.org
Subject: Re: bug#34387: 26.1; Gnus: handle empty message parts
Date: Tue, 12 Feb 2019 08:31:39 +0100
[Message part 1 (text/plain, inline)]
On 12 February 2019 at 05:34 CET, Katsumi Yamaoka wrote:
>
> […] Could you let me know how it fails?

Here is the debugger trace (message attached) :

Debugger entered--Lisp error: (args-out-of-range 4409 4410)
  #f(compiled-function (handle) #<bytecode 0x1471e8d>)((#<buffer  *mm*-671873> ("text/html" (charset . "Windows-1252")) quoted-printable (lambda nil (let ((inhibit-read-only t)) (delete-region #<marker at 4408 in *Article*> #<marker at 4408 in *Article*>))) nil nil nil nil))
  apply(#f(compiled-function (handle) #<bytecode 0x1471e8d>) (#<buffer  *mm*-671873> ("text/html" (charset . "Windows-1252")) quoted-printable (lambda nil (let ((inhibit-read-only t)) (delete-region #<marker at 4408 in *Article*> #<marker at 4408 in *Article*>))) nil nil nil nil))
  gnus-mime-display-single <at> fix(#f(compiled-function (handle) #<bytecode 0x1471e8d>) (#<buffer  *mm*-671873> ("text/html" (charset . "Windows-1252")) quoted-printable (lambda nil (let ((inhibit-read-only t)) (delete-region #<marker at 4408 in *Article*> #<marker at 4408 in *Article*>))) nil nil nil nil))
  apply(gnus-mime-display-single <at> fix #f(compiled-function (handle) #<bytecode 0x1471e8d>) (#<buffer  *mm*-671873> ("text/html" (charset . "Windows-1252")) quoted-printable (lambda nil (let ((inhibit-read-only t)) (delete-region #<marker at 4408 in *Article*> #<marker at 4408 in *Article*>))) nil nil nil nil))
  gnus-mime-display-single((#<buffer  *mm*-671873> ("text/html" (charset . "Windows-1252")) quoted-printable (lambda nil (let ((inhibit-read-only t)) (delete-region #<marker at 4408 in *Article*> #<marker at 4408 in *Article*>))) nil nil nil nil))
  gnus-mime-display-part((#<buffer  *mm*-671873> ("text/html" (charset . "Windows-1252")) quoted-printable (lambda nil (let ((inhibit-read-only t)) (delete-region #<marker at 4408 in *Article*> #<marker at 4408 in *Article*>))) nil nil nil nil))
  mapcar(gnus-mime-display-part ((#<buffer  *mm*-671873> ("text/html" (charset . "Windows-1252")) quoted-printable (lambda nil (let ((inhibit-read-only t)) (delete-region #<marker at 4408 in *Article*> #<marker at 4408 in *Article*>))) nil nil nil nil) (#<buffer  *mm*-589619> ("application/pdf" (name . "homologie_de_contact_legendrienne_bilinearisee.pdf")) base64 nil ("attachment" (modification-date . "Fri, 08 Feb 2019 11:42:34 GMT") (creation-date . "Fri, 08 Feb 2019 11:40:17 GMT") (size . "308005") (filename . "homologie_de_contact_legendrienne_bilinearisee.pdf")) "homologie_de_contact_legendrienne_bilinearisee.pdf" nil nil)))
  gnus-mime-display-mixed(((#<buffer  *mm*-671873> ("text/html" (charset . "Windows-1252")) quoted-printable (lambda nil (let ((inhibit-read-only t)) (delete-region #<marker at 4408 in *Article*> #<marker at 4408 in *Article*>))) nil nil nil nil) (#<buffer  *mm*-589619> ("application/pdf" (name . "homologie_de_contact_legendrienne_bilinearisee.pdf")) base64 nil ("attachment" (modification-date . "Fri, 08 Feb 2019 11:42:34 GMT") (creation-date . "Fri, 08 Feb 2019 11:40:17 GMT") (size . "308005") (filename . "homologie_de_contact_legendrienne_bilinearisee.pdf")) "homologie_de_contact_legendrienne_bilinearisee.pdf" nil nil)))
  gnus-mime-display-part((#("multipart/mixed" 0 15 (boundary "_002_VI1PR0101MB215751953182701525CB4AD9E7690VI1PR0101MB2157_" buffer #<buffer  *mm*-468382> from "Damien.GALANT <at> student.umons.ac.be" start nil)) (#<buffer  *mm*-671873> ("text/html" (charset . "Windows-1252")) quoted-printable (lambda nil (let ((inhibit-read-only t)) (delete-region #<marker at 4408 in *Article*> #<marker at 4408 in *Article*>))) nil nil nil nil) (#<buffer  *mm*-589619> ("application/pdf" (name . "homologie_de_contact_legendrienne_bilinearisee.pdf")) base64 nil ("attachment" (modification-date . "Fri, 08 Feb 2019 11:42:34 GMT") (creation-date . "Fri, 08 Feb 2019 11:40:17 GMT") (size . "308005") (filename . "homologie_de_contact_legendrienne_bilinearisee.pdf")) "homologie_de_contact_legendrienne_bilinearisee.pdf" nil nil)))
  gnus-display-mime()
  gnus-article-prepare-display()

> Otherwise, could you show me a sample email in question? […]

Attached.

>> […] (define-advice gnus-mime-display-single (:around (oldfn &rest handle) fix)
>>   "Protect against bad handling of empty message parts."
>>   (ignore-errors (apply oldfn handle)))
>
> I'd like to fix those problems in the Gnus code. :)

Sure — it was just a suggestion in the meantime! ;-)

Best,
Christophe

[1549643640.b90ad9406f3e046e.poincare:2,ST (message/rfc822, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#34387; Package emacs. (Wed, 13 Feb 2019 04:54:02 GMT) Full text and rfc822 format available.

Message #17 received at 34387 <at> debbugs.gnu.org (full text, mbox):

From: Katsumi Yamaoka <yamaoka <at> jpl.org>
To: Christophe.Troestler <at> umons.ac.be
Cc: 34387 <at> debbugs.gnu.org
Subject: Re: bug#34387: 26.1; Gnus: handle empty message parts
Date: Wed, 13 Feb 2019 13:53:34 +0900
On Tue, 12 Feb 2019 08:31:39 +0100, Christophe Troestler wrote:
> Here is the debugger trace (message attached) :

> Debugger entered--Lisp error: (args-out-of-range 4409 4410)
>   #f(compiled-function...)(PART1)
>   apply(#f(compiled-function...) PART1)
>   gnus-mime-display-single <at> fix(#f(compiled-function...) PART1)
>   apply(gnus-mime-display-single <at> fix #f(compiled-function...) PART1)
>   gnus-mime-display-single(PART1)
>   gnus-mime-display-part(PART1)
>   mapcar(gnus-mime-display-part (PART1 PART2))
>   gnus-mime-display-mixed((PART1 PART2))
>   gnus-mime-display-part((...PART1 PART2))
>   gnus-display-mime()
>   gnus-article-prepare-display()

;; Where PART1 is the html part and PART2 is the pdf part.

If it is (narrow-to-region beg (point)) in gnus-mime-display-single
to issue (args-out-of-range 4409 4410), I guess an html rendering
function deletes buffer's contents so that the buffer's end point
may be 4409.  Here is a model to reproduce the same error:

(with-temp-buffer               ;; article buffer
  (insert-char ?x 4409)
  (let ((beg (point)))          ;; buffer's end point == 4410
    (delete-char -1)            ;; html function does this
    (narrow-to-region beg (point))))
 => (args-out-of-range 4409 4410)

The default html function is mm-shr, that gnus-mime-display-single
calls by way of mm-display-part, mm-display-inline, and
mm-inline-text-html.  At that time, the point is positioned at
the end of the article buffer, where the header lines and a
single empty line are there.

>> Otherwise, could you show me a sample email in question? […]
> Attached.

Thanks.  However, I couldn't reproduce the error with the mail
that I copied to my nnml group.  I tried it using Emacs 26.1
with no ~/.emacs, no ~/.gnus.el, but ~/.newsrc.eld,
(setq gnus-select-method '(nnnil)), and every candidate for
mm-text-html-renderer.  The only thing that reproduces it is:

(defadvice mm-shr (before delete-ceiling-newlines activate)
  "Delete newlines before the point."
  (skip-chars-backward "\n")
  (delete-region (point) (point-max)))

Well, if you have time for analyzing the problem, don't you try
edebug on the functions listed above?

Regards,

;; I'm going to fix the other 2 issues anyway.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#34387; Package emacs. (Wed, 13 Feb 2019 17:27:02 GMT) Full text and rfc822 format available.

Message #20 received at 34387 <at> debbugs.gnu.org (full text, mbox):

From: Christophe Troestler <Christophe.Troestler <at> umons.ac.be>
To: Katsumi Yamaoka <yamaoka <at> jpl.org>
Cc: 34387 <at> debbugs.gnu.org
Subject: Re: bug#34387: 26.1; Gnus: handle empty message parts
Date: Wed, 13 Feb 2019 18:26:44 +0100
On 13 February 2019 at 05:53 CET, Katsumi Yamaoka wrote:
>
> […] If it is (narrow-to-region beg (point)) in gnus-mime-display-single to issue (args-out-of-range 4409 4410), I guess an html rendering function deletes buffer's contents so that the buffer's end point may be 4409.  Here is a model to reproduce the same error:
>
> (with-temp-buffer               ;; article buffer
>   (insert-char ?x 4409)
>   (let ((beg (point)))          ;; buffer's end point == 4410
>     (delete-char -1)            ;; html function does this
>     (narrow-to-region beg (point))))
>  => (args-out-of-range 4409 4410)
>
> The default html function is mm-shr, that gnus-mime-display-single calls by way of mm-display-part, mm-display-inline, and mm-inline-text-html.  At that time, the point is positioned at the end of the article buffer, where the header lines and a single empty line are there.

Thanks for your analysis.  I indeed had an advice executed after mm-shr to remove trailing whitespace—these making sometimes the rendered text hard to read.  Deleting the advice makes the call work.

What approach would you recommend to remove trailing whitespace after rendering HTML?

Best,
C.





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#34387; Package emacs. (Wed, 13 Feb 2019 23:21:02 GMT) Full text and rfc822 format available.

Message #23 received at 34387 <at> debbugs.gnu.org (full text, mbox):

From: Katsumi Yamaoka <yamaoka <at> jpl.org>
To: Christophe.Troestler <at> umons.ac.be
Cc: 34387 <at> debbugs.gnu.org
Subject: Re: bug#34387: 26.1; Gnus: handle empty message parts
Date: Thu, 14 Feb 2019 08:20:20 +0900
On Wed, 13 Feb 2019 18:26:44 +0100, Christophe Troestler wrote:
> Thanks for your analysis.  I indeed had an advice executed after
> mm-shr to remove trailing whitespace—these making sometimes the
> rendered text hard to read.  Deleting the advice makes the call
> work.

Bingo! :)

> What approach would you recommend to remove trailing whitespace
> after rendering HTML?

The point would be to delete only whitespace that mm-shr inserts.
How about this?

(defadvice mm-shr (around delete-leading-and-trailing-whitespace activate)
  "Delete leading and trailing whitespace in Gnus article buffer."
  (when (derived-mode-p 'gnus-article-mode)
    (save-restriction
      (narrow-to-region (point) (point))
      ad-do-it
      (goto-char (point-min))
      (skip-chars-forward "\t\n ")
      (delete-region (point-min) (point))
      (goto-char (point-max))
      (skip-chars-backward "\t\n ")
      (delete-region (point) (point-max))
      (insert "\n"))))

I'll close this thread after fixing the other two related bugs.

> 1. In the article buffer, pressing the RET key on an empty
>  text/plain attachment conceals the succeeding other attachments,
>  does not toggle.  `g' restores them of course, though.

> 2. Some kind of an empty mail isn't able to be edited using the
>  `e' command (gnus-summary-edit-article), that is, a single part
>  email whose body is an empty attachment.  Gnus misunderstands
>  that the header is its body.

Regards,




Reply sent to Katsumi Yamaoka <yamaoka <at> jpl.org>:
You have taken responsibility. (Thu, 14 Feb 2019 02:17:02 GMT) Full text and rfc822 format available.

Notification sent to Christophe Troestler <Christophe.Troestler <at> umons.ac.be>:
bug acknowledged by developer. (Thu, 14 Feb 2019 02:17:02 GMT) Full text and rfc822 format available.

Message #28 received at 34387-done <at> debbugs.gnu.org (full text, mbox):

From: Katsumi Yamaoka <yamaoka <at> jpl.org>
To: 34387-done <at> debbugs.gnu.org
Cc: Christophe.Troestler <at> umons.ac.be
Subject: Re: bug#34387: 26.1; Gnus: handle empty message parts
Date: Thu, 14 Feb 2019 11:16:39 +0900
On Thu, 14 Feb 2019 08:20:20 +0900, Katsumi Yamaoka wrote:
> I'll close this thread after fixing the other two related bugs.

>> 1. In the article buffer, pressing the RET key on an empty
>>  text/plain attachment conceals the succeeding other attachments,
>>  does not toggle.  `g' restores them of course, though.

>> 2. Some kind of an empty mail isn't able to be edited using the
>>  `e' command (gnus-summary-edit-article), that is, a single part
>>  email whose body is an empty attachment.  Gnus misunderstands
>>  that the header is its body.

Done.  Closing.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#34387; Package emacs. (Thu, 14 Feb 2019 12:31:01 GMT) Full text and rfc822 format available.

Message #31 received at 34387 <at> debbugs.gnu.org (full text, mbox):

From: Christophe Troestler <Christophe.Troestler <at> umons.ac.be>
To: Katsumi Yamaoka <yamaoka <at> jpl.org>
Cc: 34387 <at> debbugs.gnu.org
Subject: Re: bug#34387: 26.1; Gnus: handle empty message parts
Date: Thu, 14 Feb 2019 13:30:34 +0100
[Message part 1 (text/plain, inline)]
On 14 February 2019 at 00:20 CET, Katsumi Yamaoka wrote:
>
> The point would be to delete only whitespace that mm-shr inserts.
> How about this?
>
> (defadvice mm-shr (around delete-leading-and-trailing-whitespace activate)
>   "Delete leading and trailing whitespace in Gnus article buffer."
>   (when (derived-mode-p 'gnus-article-mode)
>     (save-restriction
>       (narrow-to-region (point) (point))
>       ad-do-it
>       (goto-char (point-min))
>       (skip-chars-forward "\t\n ")
>       (delete-region (point-min) (point))
>       (goto-char (point-max))
>       (skip-chars-backward "\t\n ")
>       (delete-region (point) (point-max))
>       (insert "\n"))))

The point is to delete all trailing whitespace coming from the conversion of HTML to text.  Without this, some emails (such as the one attached) are hard to read because the lines end with so many whitespaces that they take several lines on the screen (filled with spaces).  The following does what I want (and does not trigger the bug, thanks to the narrowing).

(define-advice mm-shr (:around (oldfn &rest handle) delete-trailing-whitespace)
  "Delete leading and trailing whitespace in Gnus article buffer."
  (when (derived-mode-p 'gnus-article-mode)
    (save-restriction
      (narrow-to-region (point) (point))
      (apply oldfn handle)
      (delete-trailing-whitespace))))

Thanks,
C.



[1550139099.14508_1.poincare,U=88981:2,S (message/rfc822, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#34387; Package emacs. (Thu, 14 Feb 2019 22:51:01 GMT) Full text and rfc822 format available.

Message #34 received at 34387 <at> debbugs.gnu.org (full text, mbox):

From: Katsumi Yamaoka <yamaoka <at> jpl.org>
To: Christophe.Troestler <at> umons.ac.be
Cc: 34387 <at> debbugs.gnu.org
Subject: Re: bug#34387: 26.1; Gnus: handle empty message parts
Date: Fri, 15 Feb 2019 07:50:14 +0900
On Thu, 14 Feb 2019 13:30:34 +0100, Christophe Troestler wrote:
> The point is to delete all trailing whitespace coming from the
> conversion of HTML to text.  Without this, some emails (such as the
> one attached) are hard to read because the lines end with so many
> whitespaces that they take several lines on the screen (filled with
> spaces).  The following does what I want (and does not trigger the
> bug, thanks to the narrowing).

> (define-advice mm-shr (:around (oldfn &rest handle) delete-trailing-whitespace)
>   "Delete leading and trailing whitespace in Gnus article buffer."
>   (when (derived-mode-p 'gnus-article-mode)
>     (save-restriction
>       (narrow-to-region (point) (point))
>       (apply oldfn handle)
>       (delete-trailing-whitespace))))

I see.  But, sorry, I meant to do first was:

(define-advice mm-shr (:around (oldfn &rest handle) delete-trailing-whitespace)
  "Delete leading and trailing whitespace in Gnus article buffer."
  (if (derived-mode-p 'gnus-article-mode)
      (save-restriction
	(narrow-to-region (point) (point))
	(apply oldfn handle)
	(delete-trailing-whitespace))
    (apply oldfn handle)))

That is, not to do the whitespace deletion when mm-shr is used
in other than Gnus as it might require whitespace.  Anyway the
(when ...) way makes mm-shr work only in the Gnus article buffer.
:-p

Regards,




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#34387; Package emacs. (Fri, 15 Feb 2019 08:29:01 GMT) Full text and rfc822 format available.

Message #37 received at 34387 <at> debbugs.gnu.org (full text, mbox):

From: Christophe Troestler <Christophe.Troestler <at> umons.ac.be>
To: Katsumi Yamaoka <yamaoka <at> jpl.org>
Cc: 34387 <at> debbugs.gnu.org
Subject: Re: bug#34387: 26.1; Gnus: handle empty message parts
Date: Fri, 15 Feb 2019 09:28:28 +0100
On 14 February 2019 at 23:50 CET, Katsumi Yamaoka wrote:
>
> […] I see.  But, sorry, I meant to do first was:
>
> (define-advice mm-shr (:around (oldfn &rest handle) delete-trailing-whitespace)
>   "Delete leading and trailing whitespace in Gnus article buffer."
>   (if (derived-mode-p 'gnus-article-mode)
>       (save-restriction
> 	(narrow-to-region (point) (point))
> 	(apply oldfn handle)
> 	(delete-trailing-whitespace))
>     (apply oldfn handle)))
>
> That is, not to do the whitespace deletion when mm-shr is used
> in other than Gnus as it might require whitespace.  […]

Sure.  Thanks for taking the time to attract my attention to this.

Best,
C.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 15 Mar 2019 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 97 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.