}
static int
-marker_equal (Lisp_Object o1, Lisp_Object o2, int depth)
+marker_equal (Lisp_Object obj1, Lisp_Object obj2, int depth)
{
- struct buffer *b1 = XMARKER (o1)->buffer;
- if (b1 != XMARKER (o2)->buffer)
- return (0);
- else if (!b1)
- /* All markers pointing nowhere are equal */
- return (1);
- else
- return ((XMARKER (o1)->memind == XMARKER (o2)->memind));
+ struct Lisp_Marker *marker1 = XMARKER (obj1);
+ struct Lisp_Marker *marker2 = XMARKER (obj2);
+
+ return ((marker1->buffer == marker2->buffer) &&
+ (marker1->memind == marker2->memind ||
+ /* All markers pointing nowhere are equal */
+ !marker1->buffer));
}
static unsigned long
(MARKERP (pos) && !XMARKER (pos)->buffer))
{
if (point_p)
- signal_simple_error ("can't make point-marker point nowhere",
+ signal_simple_error ("Can't make point-marker point nowhere",
marker);
if (XMARKER (marker)->buffer)
unchain_marker (marker);
{
if (point_p)
signal_simple_error
- ("can't move point-marker in a killed buffer", marker);
+ ("Can't move point-marker in a killed buffer", marker);
if (XMARKER (marker)->buffer)
unchain_marker (marker);
return marker;
if (m->buffer != b)
{
if (point_p)
- signal_simple_error ("can't change buffer of point-marker", marker);
+ signal_simple_error ("Can't change buffer of point-marker", marker);
if (m->buffer != 0)
unchain_marker (marker);
m->buffer = b;
b->mark = Fmake_marker ();
BUF_MARKERS (b) = 0;
b->point_marker = Fmake_marker ();
- Fset_marker (b->point_marker, make_int (1), buf);
+ Fset_marker (b->point_marker,
+ /* For indirect buffers, point is already set. */
+ b->base_buffer ? make_int (BUF_PT (b)) : make_int (1),
+ buf);
}
void