aboutsummaryrefslogtreecommitdiffstats
path: root/src/xdisp.c
diff options
context:
space:
mode:
authorPaul Eggert2020-03-27 00:58:31 -0700
committerPaul Eggert2020-03-27 01:06:54 -0700
commitde00a933e4b35b42398582eaba58531e5fdd46ca (patch)
tree1999aba74c99e98e2b101faf65160acb45fd9b52 /src/xdisp.c
parent10bedb75c915158b7662d4dfa4afa3a231714268 (diff)
downloademacs-de00a933e4b35b42398582eaba58531e5fdd46ca.tar.gz
emacs-de00a933e4b35b42398582eaba58531e5fdd46ca.zip
Treat out-of-range positions consistently
If a position argument to get-byte etc. is an out-of-range integer, treat it the same regardless of whether it is a fixnum or a bignum. * src/buffer.c (fix_position): New function. * src/buffer.c (validate_region): * src/character.c (Fget_byte): * src/coding.c (Ffind_coding_systems_region_internal) (Fcheck_coding_systems_region): * src/composite.c (Ffind_composition_internal): * src/editfns.c (Fposition_bytes, Fchar_after, Fchar_before) (Finsert_buffer_substring, Fcompare_buffer_substrings) (Fnarrow_to_region): * src/fns.c (Fsecure_hash_algorithms): * src/font.c (Finternal_char_font, Ffont_at): * src/fringe.c (Ffringe_bitmaps_at_pos): * src/search.c (search_command): * src/textprop.c (get_char_property_and_overlay): * src/window.c (Fpos_visible_in_window_p): * src/xdisp.c (Fwindow_text_pixel_size): Use it instead of CHECK_FIXNUM_COERCE_MARKER, so that the code is simpler and treats bignums consistently with fixnums. * src/buffer.h (CHECK_FIXNUM_COERCE_MARKER): Define here rather than in lisp.h, and reimplement in terms of fix_position so that it treats bignums consistently with fixnums. * src/lisp.h (CHECK_FIXNUM_COERCE_MARKER): Move to buffer.h. * src/textprop.c (validate_interval_range): Signal with original bounds rather than modified ones.
Diffstat (limited to 'src/xdisp.c')
-rw-r--r--src/xdisp.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 58d7ca5cb71..61c798c59e8 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -10413,10 +10413,7 @@ include the height of both, if present, in the return value. */)
10413 start = pos; 10413 start = pos;
10414 } 10414 }
10415 else 10415 else
10416 { 10416 start = clip_to_bounds (BEGV, fix_position (from), ZV);
10417 CHECK_FIXNUM_COERCE_MARKER (from);
10418 start = min (max (XFIXNUM (from), BEGV), ZV);
10419 }
10420 10417
10421 if (NILP (to)) 10418 if (NILP (to))
10422 end = ZV; 10419 end = ZV;
@@ -10430,10 +10427,7 @@ include the height of both, if present, in the return value. */)
10430 end = pos; 10427 end = pos;
10431 } 10428 }
10432 else 10429 else
10433 { 10430 end = clip_to_bounds (start, fix_position (to), ZV);
10434 CHECK_FIXNUM_COERCE_MARKER (to);
10435 end = max (start, min (XFIXNUM (to), ZV));
10436 }
10437 10431
10438 if (!NILP (x_limit) && RANGED_FIXNUMP (0, x_limit, INT_MAX)) 10432 if (!NILP (x_limit) && RANGED_FIXNUMP (0, x_limit, INT_MAX))
10439 max_x = XFIXNUM (x_limit); 10433 max_x = XFIXNUM (x_limit);