Merge from emacs--devo--0
[bpt/emacs.git] / src / intervals.c
index 77971ac..21e60c9 100644 (file)
@@ -2196,36 +2196,38 @@ set_point_both (buffer, charpos, bytepos)
       Lisp_Object leave_after, leave_before, enter_after, enter_before;
 
       if (fromprev)
-       leave_after = textget (fromprev->plist, Qpoint_left);
+       leave_before = textget (fromprev->plist, Qpoint_left);
       else
-       leave_after = Qnil;
+       leave_before = Qnil;
+
       if (from)
-       leave_before = textget (from->plist, Qpoint_left);
+       leave_after = textget (from->plist, Qpoint_left);
       else
-       leave_before = Qnil;
+       leave_after = Qnil;
 
       if (toprev)
-       enter_after = textget (toprev->plist, Qpoint_entered);
+       enter_before = textget (toprev->plist, Qpoint_entered);
       else
-       enter_after = Qnil;
+       enter_before = Qnil;
+
       if (to)
-       enter_before = textget (to->plist, Qpoint_entered);
+       enter_after = textget (to->plist, Qpoint_entered);
       else
-       enter_before = Qnil;
+       enter_after = Qnil;
 
       if (! EQ (leave_before, enter_before) && !NILP (leave_before))
-       call2 (leave_before, make_number (old_position),
-              make_number (charpos));
+       call2 (leave_before, make_number (old_position),
+              make_number (charpos));
       if (! EQ (leave_after, enter_after) && !NILP (leave_after))
-       call2 (leave_after, make_number (old_position),
-              make_number (charpos));
+       call2 (leave_after, make_number (old_position),
+              make_number (charpos));
 
       if (! EQ (enter_before, leave_before) && !NILP (enter_before))
-       call2 (enter_before, make_number (old_position),
-              make_number (charpos));
+       call2 (enter_before, make_number (old_position),
+              make_number (charpos));
       if (! EQ (enter_after, leave_after) && !NILP (enter_after))
-       call2 (enter_after, make_number (old_position),
-              make_number (charpos));
+       call2 (enter_after, make_number (old_position),
+              make_number (charpos));
     }
 }
 \f
@@ -2339,7 +2341,9 @@ get_property_and_range (pos, prop, val, start, end, object)
 /* Return the proper local keymap TYPE for position POSITION in
    BUFFER; TYPE should be one of `keymap' or `local-map'.  Use the map
    specified by the PROP property, if any.  Otherwise, if TYPE is
-   `local-map' use BUFFER's local map.  */
+   `local-map' use BUFFER's local map.
+
+   POSITION must be in the accessible part of BUFFER.  */
 
 Lisp_Object
 get_local_map (position, buffer, type)
@@ -2351,7 +2355,7 @@ get_local_map (position, buffer, type)
   int old_begv, old_zv, old_begv_byte, old_zv_byte;
 
   /* Perhaps we should just change `position' to the limit.  */
-  if (position > BUF_Z (buffer) || position < BUF_BEG (buffer))
+  if (position > BUF_ZV (buffer) || position < BUF_BEGV (buffer))
     abort ();
 
   /* Ignore narrowing, so that a local map continues to be valid even if