diff src/editfns.c @ 51042:edeae7524de9

(get_pos_property): Don't assume that `object' = nil.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 17 May 2003 18:47:04 +0000
parents 2a57a6e6b390
children beceb827c1ce
line wrap: on
line diff
--- a/src/editfns.c	Sat May 17 18:46:36 2003 +0000
+++ b/src/editfns.c	Sat May 17 18:47:04 2003 +0000
@@ -1,5 +1,5 @@
 /* Lisp functions pertaining to editing.
-   Copyright (C) 1985,86,87,89,93,94,95,96,97,98, 1999, 2000, 2001, 2002
+   Copyright (C) 1985,86,87,89,93,94,95,96,97,98, 1999, 2000, 2001, 02, 2003
 	Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -399,19 +399,19 @@
      Lisp_Object position, object;
      register Lisp_Object prop;
 {
-  struct window *w = 0;
-
   CHECK_NUMBER_COERCE_MARKER (position);
 
   if (NILP (object))
     XSETBUFFER (object, current_buffer);
-
-  if (WINDOWP (object))
-    {
-      w = XWINDOW (object);
-      object = w->buffer;
-    }
-  if (BUFFERP (object))
+  else if (WINDOWP (object))
+    object = XWINDOW (object)->buffer;
+
+  if (!BUFFERP (object))
+    /* pos-property only makes sense in buffers right now, since strings
+       have no overlays and no notion of insertion for which stickiness
+       could be obeyed.  */
+    return Fget_text_property (position, prop, object);
+  else
     {
       int posn = XINT (position);
       int noverlays;
@@ -457,18 +457,18 @@
 	    }
 	}
 
+      { /* Now check the text-properties.  */
+	int stickiness = text_property_stickiness (prop, position, object);
+	if (stickiness > 0)
+	  return Fget_text_property (position, prop, object);
+	else if (stickiness < 0
+		 && XINT (position) > BUF_BEGV (XBUFFER (object)))
+	  return Fget_text_property (make_number (XINT (position) - 1),
+				     prop, object);
+	else
+	  return Qnil;
+      }
     }
-
-  { /* Now check the text-properties.  */
-    int stickiness = text_property_stickiness (prop, position);
-    if (stickiness > 0)
-      return Fget_text_property (position, prop, Qnil);
-    else if (stickiness < 0 && XINT (position) > BEGV)
-      return Fget_text_property (make_number (XINT (position) - 1),
-				 prop, Qnil);
-    else
-      return Qnil;
-  }
 }
 
 /* Find the field surrounding POS in *BEG and *END.  If POS is nil,