]> code.delx.au - gnu-emacs/blobdiff - src/intervals.c
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-86
[gnu-emacs] / src / intervals.c
index 33ef9a3417740701322f05f05cedfd3205604535..e054c6ca4299a96c714bd04745f321bb8c9a557a 100644 (file)
@@ -1,5 +1,6 @@
 /* Code for doing intervals.
-   Copyright (C) 1993, 1994, 1995, 1997, 1998, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1993, 1994, 1995, 1997, 1998, 2002, 2003, 2004,
+                 2005 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -15,8 +16,8 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
 
 
 /* NOTES:
@@ -790,14 +791,14 @@ update_interval (i, pos)
          /* Move right. */
          if (pos < INTERVAL_LAST_POS (i) + TOTAL_LENGTH (i->right))
            {
-             i->right->position = INTERVAL_LAST_POS (i) +
-               LEFT_TOTAL_LENGTH (i->right);
+             i->right->position = INTERVAL_LAST_POS (i)
+               LEFT_TOTAL_LENGTH (i->right);
              i = i->right;             /* Move to the right child */
            }
          else if (NULL_PARENT (i))
-           error ("Point after end of properties");
+           error ("Point %d after end of properties", pos);
          else
-             i = INTERVAL_PARENT (i);
+            i = INTERVAL_PARENT (i);
          continue;
        }
       else
@@ -2275,6 +2276,10 @@ move_if_not_intangible (position)
          pos = Fnext_char_property_change (pos, Qnil);
 
     }
+  else if (position < BEGV)
+    position = BEGV;
+  else if (position > ZV)
+    position = ZV;
 
   /* If the whole stretch between PT and POSITION isn't intangible,
      try moving to POSITION (which means we actually move farther
@@ -2295,7 +2300,7 @@ int
 get_property_and_range (pos, prop, val, start, end, object)
      int pos;
      Lisp_Object prop, *val;
-     int *start, *end;
+     EMACS_INT *start, *end;
      Lisp_Object object;
 {
   INTERVAL i, prev, next;