]> git.eshelyaron.com Git - emacs.git/commitdiff
Guard terminal parameter in XTerm mouse mode
authorPhilipp Stephani <phst@google.com>
Tue, 22 Nov 2016 20:32:11 +0000 (21:32 +0100)
committerPhilipp Stephani <phst@google.com>
Mon, 28 Nov 2016 18:45:03 +0000 (19:45 +0100)
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 <drag-mouse-0> 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

index 5fb977d99e56d6ecee2750287f83cb64fe69e88c..d2d0cf5ee065e7d62eff85560831c0c99d8cd052 100644 (file)
@@ -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