changeset 22280:e179bf1418b7

(Fnext_property_change): Properly offset interval position for string when comparing with LIMIT. (property_change_between_p): Likewise. (Fnext_single_property_change, Fprevious_property_change): Likewise. (Fprevious_single_property_change): Likewise.
author Karl Heuer <kwzh@gnu.org>
date Fri, 29 May 1998 22:26:22 +0000
parents e50e9ea93700
children fa2cf768a61a
files src/textprop.c
diffstat 1 files changed, 18 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/textprop.c	Thu May 28 18:10:20 1998 +0000
+++ b/src/textprop.c	Fri May 29 22:26:22 1998 +0000
@@ -726,12 +726,14 @@
   next = next_interval (i);
 
   while (! NULL_INTERVAL_P (next) && intervals_equal (i, next)
-	 && (NILP (limit) || next->position < XFASTINT (limit)))
+	 && (NILP (limit)
+	     || next->position - (STRINGP (object)) < XFASTINT (limit)))
     next = next_interval (next);
 
   if (NULL_INTERVAL_P (next))
     return limit;
-  if (! NILP (limit) && !(next->position < XFASTINT (limit)))
+  if (! NILP (limit)
+      && !(next->position - (STRINGP (object)) < XFASTINT (limit)))
     return limit;
 
   XSETFASTINT (position, next->position - (STRINGP (object)));
@@ -760,7 +762,7 @@
       next = next_interval (next);
       if (NULL_INTERVAL_P (next))
 	return 0;
-      if (next->position >= end)
+      if (next->position - (STRINGP (object)) >= end)
 	return 0;
     }
 
@@ -801,12 +803,13 @@
   next = next_interval (i);
   while (! NULL_INTERVAL_P (next) 
 	 && EQ (here_val, textget (next->plist, prop))
-	 && (NILP (limit) || next->position < XFASTINT (limit)))
+	 && (NILP (limit) || next->position - (STRINGP (object)) < XFASTINT (limit)))
     next = next_interval (next);
 
   if (NULL_INTERVAL_P (next))
     return limit;
-  if (! NILP (limit) && !(next->position < XFASTINT (limit)))
+  if (! NILP (limit)
+      && !(next->position - (STRINGP (object)) < XFASTINT (limit)))
     return limit;
 
   XSETFASTINT (position, next->position - (STRINGP (object)));
@@ -845,16 +848,18 @@
   previous = previous_interval (i);
   while (! NULL_INTERVAL_P (previous) && intervals_equal (previous, i)
 	 && (NILP (limit)
-	     || previous->position + LENGTH (previous) > XFASTINT (limit)))
+	     || (previous->position + LENGTH (previous) - (STRINGP (object))
+		 > XFASTINT (limit))))
     previous = previous_interval (previous);
   if (NULL_INTERVAL_P (previous))
     return limit;
   if (!NILP (limit)
-      && !(previous->position + LENGTH (previous) > XFASTINT (limit)))
+      && !(previous->position + LENGTH (previous) - (STRINGP (object))
+	   > XFASTINT (limit)))
     return limit;
 
   XSETFASTINT (position, (previous->position + LENGTH (previous)
-		     - (STRINGP (object))));
+			  - (STRINGP (object))));
   return position;
 }
 
@@ -895,16 +900,18 @@
   while (! NULL_INTERVAL_P (previous)
 	 && EQ (here_val, textget (previous->plist, prop))
 	 && (NILP (limit)
-	     || previous->position + LENGTH (previous) > XFASTINT (limit)))
+	     || (previous->position + LENGTH (previous) - (STRINGP (object))
+		 > XFASTINT (limit))))
     previous = previous_interval (previous);
   if (NULL_INTERVAL_P (previous))
     return limit;
   if (!NILP (limit)
-      && !(previous->position + LENGTH (previous) > XFASTINT (limit)))
+      && !(previous->position + LENGTH (previous) - (STRINGP (object))
+	   > XFASTINT (limit)))
     return limit;
 
   XSETFASTINT (position, (previous->position + LENGTH (previous)
-		     - (STRINGP (object))));
+			  - (STRINGP (object))));
   return position;
 }