Subject: bug#40247: 27.0.90; mailcap-mime-data erased when parsing mime parts

From: Juan José García Ripoll <[email-masked]>
Date: Thu, 26 Mar 2020 23:53:44 +0100

Symptoms:
- Start Emacs in a system without ~/.mailcap
- Launch Gnus
- Open an email / news that has some part in text/html
- mailcap-mime-data is erased and none of the default viewers are
available any more.

The problem persits if Emacs is customized using mailcap-add

Moreover, this deletion happens every time a mime part is decoded,
because, as shown in this commit
http://git.savannah.gnu.org/cgit/emacs.git/commit/lisp/net/mailcap.el?h=emacs-27&id=a5a967b43dd2810635d7a06ea70510c4a8e5c10f
mailcap-mime-info involes mailcap-parse-mailcaps with "force" set to T
every time Emacs tries to compute the list of viewers associated to a
mime part -- does not matter whether the part is displayed inline or
externally; the mere visualization of the email causes mailcap-mime-data
to be erased.

This bug breaks systems that do not rely on .mailcap for defining
external viewers. In particular, it breaks systems that require
pdf-tools or doc-view to view certain attachments. It also deletes
Emacs' traditional association list betwee mime types and actions.

In GNU Emacs 27.0.90 (build 5, x86_64-w64-mingw32)
 of 2020-03-25 built on DESKTOP-3A8AAJ0
Repository revision: 4860530f3c130c6f854ea83dcc03f59e535a33ba
Repository branch: emacs-27
Windowing system distributor 'Microsoft Corp.', version 10.0.18363
System Description: Microsoft Windows 10 Pro for Workstations (v10.0.1909.18363.720)

Recent messages:
Loading c:/Users/juanj/OneDrive/Library/Emacs/init.el (source)...
Truncate long lines enabled
Loading dired...done
Loading sendmail...done
Loading gnus...done
Loading c:/Users/juanj/OneDrive/Library/Emacs/init.el (source)...done
For information about GNU Emacs and the GNU system, type C-h C-a.

Configured using:
 'configure --without-dbus --host=x86_64-w64-mingw32
 --without-compress-install 'CFLAGS=-O2 -static -g3''

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY W32NOTIFY ACL GNUTLS LIBXML2
HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS MODULES THREADS JSON PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: ESN
  locale-coding-system: cp1252

Major mode: Help

Minor modes in effect:
  ido-vertical-mode: t
  save-place-mode: t
  savehist-mode: t
  gcmh-mode: t
  override-global-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-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
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort vc-git diff-mode mailalias bbdb-mua bbdb-com crm bbdb
bbdb-site timezone org-mime ox-org org-protocol ox-reveal cl ox-odt
rng-loc rng-uri rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse
nxml-ns nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html table
ox-ascii ox-publish ox org-element avl-tree generator org org-macro
org-footnote org-pcomplete pcomplete org-list org-faces org-entities
org-version ob-python ob ob-tangle org-src ob-ref ob-lob ob-table ob-exp
ob-comint comint ansi-color ring ob-emacs-lisp ob-core ob-eval org-table
ol org-keys org-compat org-macs org-loaddefs noutline outline face-remap
mail-extr warnings emacsbug message rmc puny format-spec rfc822 mml
mml-sec epa derived epg epg-config mailabbrev gmm-utils mailheader
eieio-opt speedbar sb-image ezimage dframe cal-menu calendar
cal-loaddefs thingatpt help-fns radix-tree benchmark-init-modes
mm-decode mm-bodies mm-encode mail-parse rfc2231 debug backtrace
find-func mailcap pcase ido-vertical-mode ido gnus-win gnus nnheader
gnus-util rmail rmail-loaddefs text-property-search time-date sendmail
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils dired
dired-loaddefs grayscale-theme saveplace savehist edmacro kmacro
cus-edit cus-start cus-load wid-edit benchmark-init advice gcmh diminish
cl-extra help-mode use-package use-package-ensure use-package-delight
use-package-diminish use-package-bind-key bind-key easy-mmode
use-package-core finder-inf tex-site info package easymenu browse-url
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv
bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel dos-w32 ls-lisp
disp-table term/w32-win w32-win w32-vars term/common-win tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame minibuffer 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
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 threads w32notify w32
lcms2 multi-tty make-network-process emacs)

Memory information:
((conses 16 406075 136288)
 (symbols 48 26199 18)
 (strings 32 147191 19372)
 (string-bytes 1 3986907)
 (vectors 16 49708)
 (vector-slots 8 1378984 300360)
 (floats 8 246 907)
 (intervals 56 690 197)
 (buffers 1000 16))

-- 
Juan José García Ripoll

Quantum Information and Foundations Group
Institute of Fundamental Physics IFF-CSIC
Calle Serrano 113b, Madrid 28006 Spain
http://quinfog.hbar.es - http://juanjose.garcia.ripoll