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.
This commit is contained in:
Noam Postavsky 2019-05-21 20:33:09 -04:00
parent 2168165ec0
commit c4d4dcf17e

View file

@ -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