]> 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>
Tue, 22 Nov 2016 20:32:11 +0000 (21:32 +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 a2b64019f97ccbe8bd98c066b066dfec642ed47d..15fc6de6a42b7073b26f2bf1403c29e2f4e470df 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