]> git.eshelyaron.com Git - emacs.git/commitdiff
Minor improvements to locked narrowing
authorGregory Heytings <gregory@heytings.org>
Sun, 27 Nov 2022 22:53:20 +0000 (22:53 +0000)
committerGregory Heytings <gregory@heytings.org>
Sun, 27 Nov 2022 22:53:51 +0000 (23:53 +0100)
* 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
src/xdisp.c

index b82a5e1a3ef1face9286244260268f5f3078b3a3..ac40ba059ead1e1c927724d4b92dcf447ef7d81b 100644 (file)
@@ -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);
index 0002c3d611ca01ca8a1257e2804f7380d63fa89a..d423a77bde0fcf732d8cb9dada91e99646bf78af 100644 (file)
@@ -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;