From 6d3cea2c8edde5ee8d6d8fe1364cd318e3270515 Mon Sep 17 00:00:00 2001 From: Gregory Heytings Date: Sun, 27 Nov 2022 22:53:20 +0000 Subject: [PATCH] Minor improvements to locked narrowing * src/xdisp.c (get_locked_narrowing_begv) (get_locked_narrowing_zv): Safer handling of negative values. (handle_fontified_prop): Do not use locked narrowing if the region size is <= 0. * src/keyboard.c (safe_run_hooks_maybe_narrowed): Do not use locked narrowing if the region size is <= 0. --- src/keyboard.c | 3 ++- src/xdisp.c | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/keyboard.c b/src/keyboard.c index b82a5e1a3ef..ac40ba059ea 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -1910,7 +1910,8 @@ safe_run_hooks_maybe_narrowed (Lisp_Object hook, struct window *w) specbind (Qinhibit_quit, Qt); - if (current_buffer->long_line_optimizations_p) + if (current_buffer->long_line_optimizations_p + && long_line_locked_narrowing_region_size > 0) narrow_to_region_locked (make_fixnum (get_locked_narrowing_begv (PT)), make_fixnum (get_locked_narrowing_zv (PT)), hook); diff --git a/src/xdisp.c b/src/xdisp.c index 0002c3d611c..d423a77bde0 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -3536,12 +3536,12 @@ get_closer_narrowed_begv (struct window *w, ptrdiff_t pos) ptrdiff_t get_locked_narrowing_begv (ptrdiff_t pos) { - if (long_line_locked_narrowing_region_size == 0) + if (long_line_locked_narrowing_region_size <= 0) return BEGV; int len = long_line_locked_narrowing_region_size / 2; int begv = max (pos - len, BEGV); int limit = long_line_locked_narrowing_bol_search_limit; - while (limit) + while (limit > 0) { if (begv == BEGV || FETCH_BYTE (CHAR_TO_BYTE (begv) - 1) == '\n') return begv; @@ -3554,7 +3554,7 @@ get_locked_narrowing_begv (ptrdiff_t pos) ptrdiff_t get_locked_narrowing_zv (ptrdiff_t pos) { - if (long_line_locked_narrowing_region_size == 0) + if (long_line_locked_narrowing_region_size <= 0) return ZV; int len = long_line_locked_narrowing_region_size / 2; return min (pos + len, ZV); @@ -4393,7 +4393,8 @@ handle_fontified_prop (struct it *it) eassert (it->end_charpos == ZV); - if (current_buffer->long_line_optimizations_p) + if (current_buffer->long_line_optimizations_p + && long_line_locked_narrowing_region_size > 0) { ptrdiff_t begv = it->locked_narrowing_begv; ptrdiff_t zv = it->locked_narrowing_zv; -- 2.39.5