X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/e0f24100c74828aadd926f0afa6e3440be8c89d0..739d627a477191703f57ca4cfbd1bf8dc25625f9:/src/textprop.c diff --git a/src/textprop.c b/src/textprop.c index 8ce5656e5a..ef6dda2014 100644 --- a/src/textprop.c +++ b/src/textprop.c @@ -1,6 +1,6 @@ /* Interface code for dealing with text properties. Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -201,9 +201,9 @@ validate_plist (list) { register int i; register Lisp_Object tail; - for (i = 0, tail = list; !NILP (tail); i++) + for (i = 0, tail = list; CONSP (tail); i++) { - tail = Fcdr (tail); + tail = XCDR (tail); QUIT; } if (i & 1) @@ -226,18 +226,18 @@ interval_has_all_properties (plist, i) register int found; /* Go through each element of PLIST. */ - for (tail1 = plist; ! NILP (tail1); tail1 = Fcdr (Fcdr (tail1))) + for (tail1 = plist; CONSP (tail1); tail1 = Fcdr (XCDR (tail1))) { - sym1 = Fcar (tail1); + sym1 = XCAR (tail1); found = 0; /* Go through I's plist, looking for sym1 */ - for (tail2 = i->plist; ! NILP (tail2); tail2 = Fcdr (Fcdr (tail2))) - if (EQ (sym1, Fcar (tail2))) + for (tail2 = i->plist; CONSP (tail2); tail2 = Fcdr (XCDR (tail2))) + if (EQ (sym1, XCAR (tail2))) { /* Found the same property on both lists. If the values are unequal, return zero. */ - if (! EQ (Fcar (Fcdr (tail1)), Fcar (Fcdr (tail2)))) + if (! EQ (Fcar (XCDR (tail1)), Fcar (XCDR (tail2)))) return 0; /* Property has same value on both lists; go to next one. */ @@ -263,13 +263,13 @@ interval_has_some_properties (plist, i) register Lisp_Object tail1, tail2, sym; /* Go through each element of PLIST. */ - for (tail1 = plist; ! NILP (tail1); tail1 = Fcdr (Fcdr (tail1))) + for (tail1 = plist; CONSP (tail1); tail1 = Fcdr (XCDR (tail1))) { - sym = Fcar (tail1); + sym = XCAR (tail1); /* Go through i's plist, looking for tail1 */ - for (tail2 = i->plist; ! NILP (tail2); tail2 = Fcdr (Fcdr (tail2))) - if (EQ (sym, Fcar (tail2))) + for (tail2 = i->plist; CONSP (tail2); tail2 = Fcdr (XCDR (tail2))) + if (EQ (sym, XCAR (tail2))) return 1; } @@ -287,12 +287,12 @@ interval_has_some_properties_list (list, i) register Lisp_Object tail1, tail2, sym; /* Go through each element of LIST. */ - for (tail1 = list; ! NILP (tail1); tail1 = XCDR (tail1)) + for (tail1 = list; CONSP (tail1); tail1 = XCDR (tail1)) { sym = Fcar (tail1); /* Go through i's plist, looking for tail1 */ - for (tail2 = i->plist; ! NILP (tail2); tail2 = XCDR (XCDR (tail2))) + for (tail2 = i->plist; CONSP (tail2); tail2 = XCDR (XCDR (tail2))) if (EQ (sym, XCAR (tail2))) return 1; } @@ -391,21 +391,21 @@ add_properties (plist, i, object) GCPRO3 (tail1, sym1, val1); /* Go through each element of PLIST. */ - for (tail1 = plist; ! NILP (tail1); tail1 = Fcdr (Fcdr (tail1))) + for (tail1 = plist; CONSP (tail1); tail1 = Fcdr (XCDR (tail1))) { - sym1 = Fcar (tail1); - val1 = Fcar (Fcdr (tail1)); + sym1 = XCAR (tail1); + val1 = Fcar (XCDR (tail1)); found = 0; /* Go through I's plist, looking for sym1 */ - for (tail2 = i->plist; ! NILP (tail2); tail2 = Fcdr (Fcdr (tail2))) - if (EQ (sym1, Fcar (tail2))) + for (tail2 = i->plist; CONSP (tail2); tail2 = Fcdr (XCDR (tail2))) + if (EQ (sym1, XCAR (tail2))) { /* No need to gcpro, because tail2 protects this and it must be a cons cell (we get an error otherwise). */ register Lisp_Object this_cdr; - this_cdr = Fcdr (tail2); + this_cdr = XCDR (tail2); /* Found the property. Now check its value. */ found = 1; @@ -646,6 +646,10 @@ get_char_property_and_overlay (position, prop, object, overlay) Lisp_Object *overlay_vec; struct buffer *obuf = current_buffer; + if (XINT (position) < BUF_BEGV (XBUFFER (object)) + || XINT (position) > BUF_ZV (XBUFFER (object))) + xsignal1 (Qargs_out_of_range, position); + set_buffer_temp (XBUFFER (object)); GET_OVERLAYS_AT (XINT (position), overlay_vec, noverlays, NULL, 0); @@ -713,7 +717,7 @@ POSITION is at the end of OBJECT, both car and cdr are nil. */) Lisp_Object overlay; Lisp_Object val = get_char_property_and_overlay (position, prop, object, &overlay); - return Fcons(val, overlay); + return Fcons (val, overlay); } @@ -1965,10 +1969,10 @@ text_property_list (object, start, end, prop) plist = i->plist; if (!NILP (prop)) - for (; !NILP (plist); plist = Fcdr (Fcdr (plist))) - if (EQ (Fcar (plist), prop)) + for (; CONSP (plist); plist = Fcdr (XCDR (plist))) + if (EQ (XCAR (plist), prop)) { - plist = Fcons (prop, Fcons (Fcar (Fcdr (plist)), Qnil)); + plist = Fcons (prop, Fcons (Fcar (XCDR (plist)), Qnil)); break; }