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:
parent
48373e7540
commit
1171fa32ca
1 changed files with 12 additions and 1 deletions
13
src/marker.c
13
src/marker.c
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue