diff options
| author | Paul Eggert | 2020-03-27 00:58:31 -0700 |
|---|---|---|
| committer | Paul Eggert | 2020-03-27 01:06:54 -0700 |
| commit | de00a933e4b35b42398582eaba58531e5fdd46ca (patch) | |
| tree | 1999aba74c99e98e2b101faf65160acb45fd9b52 /src/xdisp.c | |
| parent | 10bedb75c915158b7662d4dfa4afa3a231714268 (diff) | |
| download | emacs-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.c | 10 |
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); |