]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix last change.
authorChong Yidong <cyd@gnu.org>
Fri, 20 Apr 2012 07:13:25 +0000 (15:13 +0800)
committerChong Yidong <cyd@gnu.org>
Fri, 20 Apr 2012 07:13:25 +0000 (15:13 +0800)
* lisp/progmodes/gdb-mi.el (gdb-inferior-io-sentinel): Don't do
anything if gdb process is killed.

lisp/progmodes/gdb-mi.el

index 455727f9e02167831fb049d0969fa65a504bbe70..f2d8f1f75b7e49ac0005d6d01efc227410d86b83 100644 (file)
@@ -1536,12 +1536,16 @@ DOC is an optional documentation string."
 (defun gdb-inferior-io-sentinel (proc str)
   (when (eq (process-status proc) 'failed)
     ;; When the debugged process exits, Emacs gets an EIO error on
-    ;; read from the pty, and stops listening to it.  Remove the pty,
-    ;; make a new one, and pass it to gdb.
-    (let ((buffer (process-buffer proc)))
-      ;; `comint-exec' deletes the original process as a side effect.
-      (comint-exec buffer "gdb-inferior" nil nil nil)
-      (gdb-inferior-io--init-proc (get-buffer-process buffer)))))
+    ;; read from the pty, and stops listening to it.  If the gdb
+    ;; process is still running, remove the pty, make a new one, and
+    ;; pass it to gdb.
+    (let ((gdb-proc (get-buffer-process gud-comint-buffer))
+         (io-buffer (process-buffer proc)))
+      (when (and gdb-proc (process-live-p gdb-proc)
+                (buffer-live-p io-buffer))
+       ;; `comint-exec' deletes the original process as a side effect.
+       (comint-exec io-buffer "gdb-inferior" nil nil nil)
+       (gdb-inferior-io--init-proc (get-buffer-process io-buffer))))))
 
 (defconst gdb-frame-parameters
   '((height . 14) (width . 80)