From: Noam Postavsky Date: Wed, 22 May 2019 00:33:09 +0000 (-0400) Subject: Avoid infloop in read-multiple-choice (Bug#32257) X-Git-Tag: emacs-26.2.90~40 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c4d4dcf;p=emacs.git Avoid infloop in read-multiple-choice (Bug#32257) * lisp/emacs-lisp/rmc.el (read-multiple-choice): When `read-char' signals an error "Non-character input-event", call `read-event' to take the non-character event out of the queue. Don't merge to master, we just use `read-event' directly there, rather than this solution which relies a particular error message. --- diff --git a/lisp/emacs-lisp/rmc.el b/lisp/emacs-lisp/rmc.el index 6d1adae9749..5411f2ba77b 100644 --- a/lisp/emacs-lisp/rmc.el +++ b/lisp/emacs-lisp/rmc.el @@ -116,10 +116,15 @@ Usage example: (cons (capitalize (cadr elem)) (car elem))) choices))) - (condition-case nil + (condition-case err (let ((cursor-in-echo-area t)) (read-char)) - (error nil)))) + (error (when (equal (cadr err) "Non-character input-event") + ;; Use up the non-character input-event. + ;; Otherwise we'll just keep reading it + ;; again and again (Bug#32257). + (read-event)) + nil)))) (setq answer (lookup-key query-replace-map (vector tchar) t)) (setq tchar (cond