From: Gregory Heytings Date: Sun, 27 Nov 2022 22:53:20 +0000 (+0000) Subject: Minor improvements to locked narrowing X-Git-Tag: emacs-29.0.90~1445 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=6d3cea2c8edde5ee8d6d8fe1364cd318e3270515;p=emacs.git 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. --- 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;