/* Markers: examining, setting and deleting.
- Copyright (C) 1985, 1997, 1998, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1985, 1997, 1998, 2001, 2002, 2003, 2004,
+ 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
int
verify_bytepos (charpos)
+ int charpos;
{
int below = 1;
int below_byte = 1;
if (XMARKER (marker)->buffer)
{
XSETBUFFER (buf, XMARKER (marker)->buffer);
- /* Return marker's buffer only if it is not dead. */
- if (!NILP (XBUFFER (buf)->name))
- return buf;
+ /* If the buffer is dead, we're in trouble: the buffer pointer here
+ does not preserve the buffer from being GC'd (it's weak), so
+ markers have to be unlinked from their buffer as soon as the buffer
+ is killed. */
+ eassert (!NILP (XBUFFER (buf)->name));
+ return buf;
}
return Qnil;
}
DEFUN ("marker-position", Fmarker_position, Smarker_position, 1, 1, 0,
- doc: /* Return the position MARKER points at, as a character number. */)
+ doc: /* Return the position MARKER points at, as a character number.
+Returns nil if MARKER points nowhere. */)
(marker)
Lisp_Object marker;
{
{
register Lisp_Object new;
- if (! (INTEGERP (marker) || MARKERP (marker)))
- marker = wrong_type_argument (Qinteger_or_marker_p, marker);
+ CHECK_TYPE (INTEGERP (marker) || MARKERP (marker), Qinteger_or_marker_p, marker);
new = Fmake_marker ();
Fset_marker (new, marker,
DEFUN ("marker-insertion-type", Fmarker_insertion_type,
Smarker_insertion_type, 1, 1, 0,
doc: /* Return insertion type of MARKER: t if it stays after inserted text.
-nil means the marker stays before text inserted there. */)
+The value nil means the marker stays before text inserted there. */)
(marker)
register Lisp_Object marker;
{