emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 6d3cea2c8e: Minor improvements to locked narrowing


From: Gregory Heytings
Subject: master 6d3cea2c8e: Minor improvements to locked narrowing
Date: Sun, 27 Nov 2022 17:54:11 -0500 (EST)

branch: master
commit 6d3cea2c8edde5ee8d6d8fe1364cd318e3270515
Author: Gregory Heytings <gregory@heytings.org>
Commit: Gregory Heytings <gregory@heytings.org>

    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 b82a5e1a3e..ac40ba059e 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 0002c3d611..d423a77bde 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;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]