From: Chong Yidong <cyd@gnu.org>
Date: Mon, 7 May 2012 03:14:21 +0000 (+0800)
Subject: Fix a gdb-mi process filtering issue arising in ansi-color.el.
X-Git-Tag: emacs-24.0.97~24
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=18f00515789afb71a4d57171d989a82a1cbe7615;p=emacs.git

Fix a gdb-mi process filtering issue arising in ansi-color.el.

* lisp/ansi-color.el (ansi-color-process-output): Check for validity
of comint-last-output-start before using it.  This avoids a bad
interaction with gdb-mi's input/output buffer.
---

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index f559acb2ecc..c6a430491b3 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2012-05-07  Chong Yidong  <cyd@gnu.org>
+
+	* ansi-color.el (ansi-color-process-output): Check for validity of
+	comint-last-output-start before using it.  This avoids a bad
+	interaction with gdb-mi's input/output buffer.
+
 2012-05-06  Glenn Morris  <rgm@gnu.org>
 
 	* files.el (dir-locals-read-from-file):
diff --git a/lisp/ansi-color.el b/lisp/ansi-color.el
index 15a543e9591..6a82f176676 100644
--- a/lisp/ansi-color.el
+++ b/lisp/ansi-color.el
@@ -217,8 +217,12 @@ The comint output is assumed to lie between the marker
 `comint-last-output-start' and the process-mark.
 
 This is a good function to put in `comint-output-filter-functions'."
-  (let ((start-marker (or comint-last-output-start
-			  (point-min-marker)))
+  (let ((start-marker (if (and (markerp comint-last-output-start)
+			       (eq (marker-buffer comint-last-output-start)
+				   (current-buffer))
+			       (marker-position comint-last-output-start))
+			  comint-last-output-start
+			(point-min-marker)))
 	(end-marker (process-mark (get-buffer-process (current-buffer)))))
     (cond ((eq ansi-color-for-comint-mode nil))
 	  ((eq ansi-color-for-comint-mode 'filter)