From d4e15492f7c55eabdadc6f3735b84972748e6c0d Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Tue, 22 Nov 2016 21:32:11 +0100 Subject: [PATCH] Guard terminal parameter in XTerm mouse mode It has been observed (in the HTerm terminal emulator) that the event stored in the 'xterm-mouse-last-down' terminal parameter gets overwritten during a mouse drag operation, causing Emacs to attempt to synthesize the non-existing event. Copy the event into the terminal parameter to protect against such modifications. * lisp/xt-mouse.el (xterm-mouse-translate-1): Guard against modification of input event list. --- lisp/xt-mouse.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el index a2b64019f97..15fc6de6a42 100644 --- a/lisp/xt-mouse.el +++ b/lisp/xt-mouse.el @@ -70,7 +70,11 @@ http://invisible-island.net/xterm/ctlseqs/ctlseqs.html)." (cond ((null event) nil) ;Unknown/bogus byte sequence! (is-down - (setf (terminal-parameter nil 'xterm-mouse-last-down) event) + (setf (terminal-parameter nil 'xterm-mouse-last-down) + ;; EVENT might be handed back to the input queue, which + ;; might modify it. Copy it into the terminal parameter + ;; to guard against that. + (copy-sequence event)) vec) (is-move vec) (t -- 2.39.2