* bug#29734: 27.0.50; shr-insert-document modify point of buffer in corner case
@ 2017-12-16 12:47 OGAWA Hirofumi
2017-12-16 14:12 ` Eli Zaretskii
0 siblings, 1 reply; 5+ messages in thread
From: OGAWA Hirofumi @ 2017-12-16 12:47 UTC (permalink / raw)
To: 29734
Hi,
The following is the reproduce code of issue,
(let ((buf (get-buffer-create "test-case")))
(display-buffer buf)
(with-current-buffer buf
(erase-buffer)
(insert "1\n")
(shr-insert-document
'(html nil (body nil (a ((href . "http://example.org")) "example"))))
(insert "\n")
(insert "2\n")))
and expected result is
1
example
2
But actual result is
example
2
1
Like above example, `shr-insert-document' modify the point
of "test-case" buffer. (display-buffer is important to
reproduce. If commented out display-buffer line, the issue
disappear.)
With some debugging I noticed, the usage of `with-temp-buffer' of
`shr-string-pixel-width' modify the point. Simplified version of
`shr-string-pixel-width' to reproduce the issue is the following,
(with-temp-buffer
(save-window-excursion
(set-window-buffer nil (current-buffer))))
In this conbination, `with-temp-buffer' seems to fail to restore
the point.
So the patch seems to save and restore the point correctly.
Thanks.
---
lisp/net/shr.el | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff -puN lisp/net/shr.el~shr-fix-point-modification lisp/net/shr.el
--- emacs/lisp/net/shr.el~shr-fix-point-modification 2017-12-16 07:32:47.777230050 +0900
+++ emacs-hirofumi/lisp/net/shr.el 2017-12-16 07:35:48.083847035 +0900
@@ -591,9 +591,10 @@ size, and full-buffer size."
(defun shr-string-pixel-width (string)
(if (not shr-use-fonts)
(length string)
- (with-temp-buffer
- (insert string)
- (shr-pixel-column))))
+ (save-excursion
+ (with-temp-buffer
+ (insert string)
+ (shr-pixel-column)))))
(defsubst shr--translate-insertion-chars ()
;; Remove soft hyphens.
_
In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.24)
of 2017-12-12 built on devron
Repository revision: 786907238bcb86ab9e0e2e9ebcc91c52a6eb024c
Windowing system distributor 'The X.Org Foundation', version 11.0.11905000
System Description: Debian GNU/Linux testing (buster)
Configured using:
'configure --libexecdir=/usr/local/lib --with-x --with-x-toolkit=gtk3
--without-xim --with-xpm --with-jpeg --with-tiff --with-gif --with-png
--with-rsvg --with-dbus --with-wide-int --with-modules'
Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GSETTINGS NOTIFY ACL
LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 MODULES JSON LCMS2
Important settings:
value of $LANG: ja_JP.UTF-8
value of $XMODIFIERS: @im=ibus
locale-coding-system: utf-8-unix
--
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#29734: 27.0.50; shr-insert-document modify point of buffer in corner case
2017-12-16 12:47 bug#29734: 27.0.50; shr-insert-document modify point of buffer in corner case OGAWA Hirofumi
@ 2017-12-16 14:12 ` Eli Zaretskii
2017-12-16 16:59 ` OGAWA Hirofumi
0 siblings, 1 reply; 5+ messages in thread
From: Eli Zaretskii @ 2017-12-16 14:12 UTC (permalink / raw)
To: OGAWA Hirofumi; +Cc: 29734
> From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
> Date: Sat, 16 Dec 2017 21:47:07 +0900
>
> (let ((buf (get-buffer-create "test-case")))
> (display-buffer buf)
> (with-current-buffer buf
> (erase-buffer)
> (insert "1\n")
> (shr-insert-document
> '(html nil (body nil (a ((href . "http://example.org")) "example"))))
> (insert "\n")
> (insert "2\n")))
>
> and expected result is
>
> 1
> example
> 2
>
> But actual result is
>
> example
> 2
> 1
>
> Like above example, `shr-insert-document' modify the point
> of "test-case" buffer. (display-buffer is important to
> reproduce. If commented out display-buffer line, the issue
> disappear.)
>
> With some debugging I noticed, the usage of `with-temp-buffer' of
> `shr-string-pixel-width' modify the point. Simplified version of
> `shr-string-pixel-width' to reproduce the issue is the following,
>
> (with-temp-buffer
> (save-window-excursion
> (set-window-buffer nil (current-buffer))))
>
> In this conbination, `with-temp-buffer' seems to fail to restore
> the point.
>
> So the patch seems to save and restore the point correctly.
Thanks.
I think save-excursion is too heavy in this case, so I installed a
change to only preserve point.
Please try the recent emacs-26 branch, it should now be fixed there.
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#29734: 27.0.50; shr-insert-document modify point of buffer in corner case
2017-12-16 14:12 ` Eli Zaretskii
@ 2017-12-16 16:59 ` OGAWA Hirofumi
2017-12-16 17:18 ` Eli Zaretskii
0 siblings, 1 reply; 5+ messages in thread
From: OGAWA Hirofumi @ 2017-12-16 16:59 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 29734
Eli Zaretskii <eliz@gnu.org> writes:
> I think save-excursion is too heavy in this case, so I installed a
> change to only preserve point.
>
> Please try the recent emacs-26 branch, it should now be fixed there.
Thanks. It works for me.
--
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#29734: 27.0.50; shr-insert-document modify point of buffer in corner case
2017-12-16 16:59 ` OGAWA Hirofumi
@ 2017-12-16 17:18 ` Eli Zaretskii
2017-12-18 2:53 ` Katsumi Yamaoka
0 siblings, 1 reply; 5+ messages in thread
From: Eli Zaretskii @ 2017-12-16 17:18 UTC (permalink / raw)
To: OGAWA Hirofumi; +Cc: 29734-done
> From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
> Cc: 29734@debbugs.gnu.org
> Date: Sun, 17 Dec 2017 01:59:50 +0900
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > I think save-excursion is too heavy in this case, so I installed a
> > change to only preserve point.
> >
> > Please try the recent emacs-26 branch, it should now be fixed there.
>
> Thanks. It works for me.
Thanks for testing, closing.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-12-18 2:53 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-16 12:47 bug#29734: 27.0.50; shr-insert-document modify point of buffer in corner case OGAWA Hirofumi
2017-12-16 14:12 ` Eli Zaretskii
2017-12-16 16:59 ` OGAWA Hirofumi
2017-12-16 17:18 ` Eli Zaretskii
2017-12-18 2:53 ` Katsumi Yamaoka
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.