From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Devon Sean McCullough Newsgroups: gmane.emacs.bugs Subject: bug#29348: 26.0.50; shr.el heisenbug Date: Sat, 18 Nov 2017 02:19:29 -0500 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: blaine.gmane.org 1510989675 7368 195.159.176.226 (18 Nov 2017 07:21:15 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 18 Nov 2017 07:21:15 +0000 (UTC) To: 29348@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Nov 18 08:21:11 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eFxR5-0001TL-8w for geb-bug-gnu-emacs@m.gmane.org; Sat, 18 Nov 2017 08:21:07 +0100 Original-Received: from localhost ([::1]:49036 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eFxRC-0007h1-BS for geb-bug-gnu-emacs@m.gmane.org; Sat, 18 Nov 2017 02:21:14 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56483) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eFxR3-0007gw-DU for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2017 02:21:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eFxR0-00017P-7j for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2017 02:21:05 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:36832) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eFxR0-00017G-3i for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2017 02:21:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eFxQz-0004Ia-Uc for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2017 02:21:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Devon Sean McCullough Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 18 Nov 2017 07:21:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 29348 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.151098961816465 (code B ref -1); Sat, 18 Nov 2017 07:21:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 18 Nov 2017 07:20:18 +0000 Original-Received: from localhost ([127.0.0.1]:45513 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eFxQH-0004HV-M2 for submit@debbugs.gnu.org; Sat, 18 Nov 2017 02:20:18 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:37193) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eFxQF-0004HH-FZ for submit@debbugs.gnu.org; Sat, 18 Nov 2017 02:20:16 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eFxQ8-0000d2-St for submit@debbugs.gnu.org; Sat, 18 Nov 2017 02:20:10 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:57871) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eFxQ8-0000cl-Oz for submit@debbugs.gnu.org; Sat, 18 Nov 2017 02:20:08 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56397) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eFxQ7-0007ah-6s for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2017 02:20:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eFxQ3-0000c5-WD for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2017 02:20:07 -0500 Original-Received: from gateway34.websitewelcome.com ([192.185.149.72]:43968) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eFxQ3-0000Ty-P5 for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2017 02:20:03 -0500 Original-Received: from cm13.websitewelcome.com (cm13.websitewelcome.com [100.42.49.6]) by gateway34.websitewelcome.com (Postfix) with ESMTP id 1AC2310AEFE5 for ; Sat, 18 Nov 2017 01:19:48 -0600 (CST) Original-Received: from leaf.websitewelcome.com ([192.185.82.99]) by cmsmtp with SMTP id FxPnek6hKrWstFxPneQlru; Sat, 18 Nov 2017 01:19:48 -0600 Original-Received: from pool-74-96-160-131.washdc.fios.verizon.net ([74.96.160.131]:55082 helo=devons-air.fios-router.home) by leaf.websitewelcome.com with esmtpsa (TLSv1:ECDHE-RSA-AES256-SHA:256) (Exim 4.89) (envelope-from ) id 1eFxPm-002arJ-MH for bug-gnu-emacs@gnu.org; Sat, 18 Nov 2017 01:19:46 -0600 X-Mailer: Apple Mail (2.3124) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - leaf.websitewelcome.com X-AntiAbuse: Original Domain - gnu.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - jovi.net X-BWhitelist: no X-Source-IP: 74.96.160.131 X-Source-L: No X-Exim-ID: 1eFxPm-002arJ-MH X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: pool-74-96-160-131.washdc.fios.verizon.net (devons-air.fios-router.home) [74.96.160.131]:55082 X-Source-Auth: devon2011@jovi.net X-Email-Count: 1 X-Source-Cap: am92aW5ldDtkZXZvbjtsZWFmLndlYnNpdGV3ZWxjb21lLmNvbQ== X-Local-Domain: yes X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:140039 Archived-At: Given the same input `shr-render-buffer' and `shr-render-region' scramble their output about 25% of the time. Here's a fix: diff -Bbdu old/shr.el new/shr.el --- old/shr.el 2017-06-06 16:19:10.000000000 -0400 +++ new/shr.el 2017-11-18 01:35:01.000000000 -0500 @@ -198,6 +198,30 @@ (set-keymap-parent map image-map)) map)) =20 +(eval-when (compile eval) + (defmacro shr-with-temp-window (&rest body) + "Temporarily give the current buffer some window and evaluate BODY = there like progn." + ;; Avoid the `save-window-excursion' heisenbug + ;; which sporadically clobbers some other buffer's point + ;; jumbling `shr-render-buffer' and `shr-render-region' output. + (let ((c (gensym "WCONFIG")) + (p (gensym "POINT"))) + `(let* ((,c (current-window-configuration)) + (,p (with-current-buffer (window-buffer (selected-window)) + (point))) + ;; Inhibit any `set-window-buffer' hooks: + window-scroll-functions + window-configuration-change-hook) + (unwind-protect + (progn + ;; Avoid errors if the selected window is strongly = dedicated. + (set-window-dedicated-p nil nil) + (set-window-buffer nil (current-buffer)) + .,body) + (set-window-configuration ,c) + (with-current-buffer (window-buffer (selected-window)) + (set-window-point (selected-window) (goto-char ,p)))))))) + ;; Public functions and commands. (declare-function libxml-parse-html-region "xml.c" (start end &optional base-url discard-comments)) @@ -539,14 +563,10 @@ (defun shr-pixel-column () (if (not shr-use-fonts) (current-column) - (if (not (get-buffer-window (current-buffer))) - (save-window-excursion - ;; Avoid errors if the selected window is a dedicated one, - ;; and they just want to insert a document into it. - (set-window-dedicated-p nil nil) - (set-window-buffer nil (current-buffer)) - (car (window-text-pixel-size nil (line-beginning-position) = (point)))) - (car (window-text-pixel-size nil (line-beginning-position) = (point)))))) + (if (get-buffer-window) + (car (window-text-pixel-size nil (line-beginning-position) = (point))) + (shr-with-temp-window + (car (window-text-pixel-size nil (line-beginning-position) = (point))))))) =20 (defun shr-pixel-region () (- (shr-pixel-column) @@ -2228,13 +2248,9 @@ (forward-line 1)) max)) (if (get-buffer-window) - (car (window-text-pixel-size nil (point-min) (point-max))) - (save-window-excursion - ;; Avoid errors if the selected window is a dedicated one, - ;; and they just want to insert a document into it. - (set-window-dedicated-p nil nil) - (set-window-buffer nil (current-buffer)) - (car (window-text-pixel-size nil (point-min) (point-max))))))) + (car (window-text-pixel-size)) + (shr-with-temp-window + (car (window-text-pixel-size)))))) =20 (defun shr-render-td (dom width fill) (let ((cache (intern (format "shr-td-cache-%s-%s" width fill)))) @@ -2275,11 +2291,7 @@ (let ((shr-internal-width width) (shr-indentation 0)) (shr-descend dom)) - (save-window-excursion - ;; Avoid errors if the selected window is a dedicated one, - ;; and they just want to insert a document into it. - (set-window-dedicated-p nil nil) - (set-window-buffer nil (current-buffer)) + (shr-with-temp-window (unless fill (setq natural-width (or (dom-attr dom 'shr-td-cache-natural) In GNU Emacs 26.0.50 (build 1, x86_64-apple-darwin13.4.0, NS = appkit-1265.21 Version 10.9.5 (Build 13F1911)) of 2017-06-07 built on builder10-9.local Windowing system distributor 'Apple', version 10.3.1404 Recent messages: Warning: arch-dependent data dir = =E2=80=99/Users/build/workspace/Emacs-Multi-Build/label/mavericks/emacs-so= urce/nextstep/Emacs.app/Contents/MacOS/libexec/=E2=80=99: No such file = or directory For information about GNU Emacs and the GNU system, type C-h C-a. Configured using: 'configure --with-ns '--enable-locallisppath=3D/Library/Application Support/Emacs/${version}/site-lisp:/Library/Application Support/Emacs/site-lisp' --with-modules' Configured features: NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS MODULES Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message subr-x puny seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib dired dired-loaddefs format-spec rfc822 mml easymenu mml-sec password-cache epa derived epg epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils time-date tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win ucs-normalize mule-util 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 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 kqueue cocoa ns multi-tty make-network-process emacs) Memory information: ((conses 16 203281 5816) (symbols 48 19810 1) (miscs 40 43 125) (strings 32 17913 6360) (string-bytes 1 581057) (vectors 16 34820) (vector-slots 8 694299 11533) (floats 8 48 182) (intervals 56 204 0) (buffers 976 11))