summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuan Fu <casouri@gmail.com>2019-10-07 18:47:54 -0400
committerEli Zaretskii <eliz@gnu.org>2020-01-31 11:39:12 +0200
commit2b1e18ae852c1490dfa22adc71f7582a1258da60 (patch)
treea32d5a5e57cebf8f7c86828a99db7423a15e2bf8
parentbaceb8e84d350bd8f981ff8289381ec55887c970 (diff)
downloademacs-2b1e18ae852c1490dfa22adc71f7582a1258da60.tar.gz
Protect against errors in gdb-mi.el handlers
* lisp/progmodes/gdb-mi.el (gdb-handle-reply): Handle errors in 'handler-function' so the cleanup code after it runs safely. (Bug#39178)
-rw-r--r--lisp/progmodes/gdb-mi.el5
1 files changed, 4 insertions, 1 deletions
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 2978d4a7672..4b0fd66c7ed 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -324,7 +324,10 @@ in `gdb-handler-list' and clears all pending handlers invalidated
by the reception of this reply."
(let ((handler-function (gdb-get-handler-function token-number)))
(when handler-function
- (funcall handler-function)
+ (condition-case err
+ ;; protect against errors in handler-function
+ (funcall handler-function)
+ (error (message (error-message-string err))))
(gdb-delete-handler token-number))))
(defun gdb-remove-all-pending-triggers ()