1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-09 05:01:02 -08:00

Fix set-marker when the position is larger than the largest buffer

* src/marker.c (set_marker_internal): Handle the case where
POSITION is beyond PTRDIFF_MAX, which can happen if Emacs was
built --with-wide-int.  Bug uncovered by the recently added
overlay tests.
This commit is contained in:
Eli Zaretskii 2019-12-06 15:29:20 +02:00
parent 48373e7540
commit 1171fa32ca

View file

@ -529,7 +529,18 @@ set_marker_internal (Lisp_Object marker, Lisp_Object position,
don't want to call buf_charpos_to_bytepos if POSITION
is a marker and so we know the bytepos already. */
if (FIXNUMP (position))
charpos = XFIXNUM (position), bytepos = -1;
{
#if EMACS_INT_MAX > PTRDIFF_MAX
/* A --with-wide-int build. */
EMACS_INT cpos = XFIXNUM (position);
if (cpos > PTRDIFF_MAX)
cpos = PTRDIFF_MAX;
charpos = cpos;
bytepos = -1;
#else
charpos = XFIXNUM (position), bytepos = -1;
#endif
}
else if (MARKERP (position))
{
charpos = XMARKER (position)->charpos;