Commit 52c0f270 authored by Chong Yidong's avatar Chong Yidong

* textprop.c (Fnext_property_change, Fnext_single_property_change)

	(Fprevious_property_change, Fprevious_single_property_change):
	Avoid changing limit, so we can correctly catch the case where the
	property is constant up to limit.
parent 4b1aaa8b
2006-09-12 Chong Yidong <cyd@stupidchicken.com>
* textprop.c (Fnext_property_change, Fnext_single_property_change)
(Fprevious_property_change, Fprevious_single_property_change):
Avoid changing limit, so we can correctly catch the case where the
property is constant up to limit.
2006-09-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* macfns.c (mac_window) [MAC_OS_X_VERSION_MAX_ALLOWED >= 1030]:
......
......@@ -1001,17 +1001,16 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
&& (NILP (limit) || next->position < XFASTINT (limit)))
next = next_interval (next);
if (NULL_INTERVAL_P (next))
return limit;
if (NILP (limit))
XSETFASTINT (limit, (STRINGP (object)
? SCHARS (object)
: BUF_ZV (XBUFFER (object))));
if (!(next->position < XFASTINT (limit)))
if (NULL_INTERVAL_P (next)
|| (next->position
>= (INTEGERP (limit)
? XFASTINT (limit)
: (STRINGP (object)
? SCHARS (object)
: BUF_ZV (XBUFFER (object))))))
return limit;
XSETFASTINT (position, next->position);
return position;
else
return make_number (next->position);
}
/* Return 1 if there's a change in some property between BEG and END. */
......@@ -1083,16 +1082,16 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
&& (NILP (limit) || next->position < XFASTINT (limit)))
next = next_interval (next);
if (NULL_INTERVAL_P (next))
return limit;
if (NILP (limit))
XSETFASTINT (limit, (STRINGP (object)
? SCHARS (object)
: BUF_ZV (XBUFFER (object))));
if (!(next->position < XFASTINT (limit)))
if (NULL_INTERVAL_P (next)
|| (next->position
>= (INTEGERP (limit)
? XFASTINT (limit)
: (STRINGP (object)
? SCHARS (object)
: BUF_ZV (XBUFFER (object))))))
return limit;
return make_number (next->position);
else
return make_number (next->position);
}
DEFUN ("previous-property-change", Fprevious_property_change,
......@@ -1132,14 +1131,15 @@ back past position LIMIT; return LIMIT if nothing is found until LIMIT. */)
&& (NILP (limit)
|| (previous->position + LENGTH (previous) > XFASTINT (limit))))
previous = previous_interval (previous);
if (NULL_INTERVAL_P (previous))
return limit;
if (NILP (limit))
XSETFASTINT (limit, (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object))));
if (!(previous->position + LENGTH (previous) > XFASTINT (limit)))
return limit;
return make_number (previous->position + LENGTH (previous));
if (NULL_INTERVAL_P (previous)
|| (previous->position + LENGTH (previous)
<= (INTEGERP (limit)
? XFASTINT (limit)
: (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object))))))
return limit;
else
return make_number (previous->position + LENGTH (previous));
}
DEFUN ("previous-single-property-change", Fprevious_single_property_change,
......@@ -1184,14 +1184,15 @@ back past position LIMIT; return LIMIT if nothing is found until LIMIT. */)
&& (NILP (limit)
|| (previous->position + LENGTH (previous) > XFASTINT (limit))))
previous = previous_interval (previous);
if (NULL_INTERVAL_P (previous))
return limit;
if (NILP (limit))
XSETFASTINT (limit, (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object))));
if (!(previous->position + LENGTH (previous) > XFASTINT (limit)))
return limit;
return make_number (previous->position + LENGTH (previous));
if (NULL_INTERVAL_P (previous)
|| (previous->position + LENGTH (previous)
<= (INTEGERP (limit)
? XFASTINT (limit)
: (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object))))))
return limit;
else
return make_number (previous->position + LENGTH (previous));
}
/* Callers note, this can GC when OBJECT is a buffer (or nil). */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment