diff src/undo.c @ 167:85ec50267440 r20-3b10

Import from CVS: tag r20-3b10
author cvs
date Mon, 13 Aug 2007 09:45:46 +0200
parents 131b0175ea99
children 3d6bfa290dbd
line wrap: on
line diff
--- a/src/undo.c	Mon Aug 13 09:44:44 2007 +0200
+++ b/src/undo.c	Mon Aug 13 09:45:46 2007 +0200
@@ -206,19 +206,23 @@
 void
 record_extent (Lisp_Object extent, int attached)
 {
-  Lisp_Object buffer = Fextent_object (extent);
-  struct buffer *b = XBUFFER (buffer); /* !!#### */
-  Lisp_Object token;
-
-  if (!undo_prelude (b, 1))
-    return;
+  Lisp_Object obj = Fextent_object (extent);
 
-  if (attached)
-    token = extent;
+  if (BUFFERP (obj))
+    {
+      Lisp_Object token;
+      struct buffer *b = XBUFFER (obj);
+      if (!undo_prelude (b, 1))
+	return;
+      if (attached)
+	token = extent;
+      else
+	token = list3 (extent, Fextent_start_position (extent),
+		       Fextent_end_position (extent));
+      b->undo_list = Fcons (token, b->undo_list);
+    }
   else
-    token = list3 (extent, Fextent_start_position (extent),
-		   Fextent_end_position (extent));
-  b->undo_list = Fcons (token, b->undo_list);
+    return;
 }
 
 #if 0 /* FSFmacs */