]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid losing the buffer restriction in flyspell-mode
authorEli Zaretskii <eliz@gnu.org>
Mon, 21 Aug 2017 17:21:28 +0000 (20:21 +0300)
committerEli Zaretskii <eliz@gnu.org>
Mon, 21 Aug 2017 17:21:28 +0000 (20:21 +0300)
* src/intervals.c (get_local_map): Don't allow C-g to quit as long
as we have the buffer widened, to make sure the restriction is
preserved.  (Bug#28161)

src/intervals.c

index 0089ecb8dde0e86eb2c93492007f8d49b0dc39d8..e65c22977ede3190a5540368f7028f435f012073 100644 (file)
@@ -2153,6 +2153,7 @@ get_local_map (ptrdiff_t position, struct buffer *buffer, Lisp_Object type)
 {
   Lisp_Object prop, lispy_position, lispy_buffer;
   ptrdiff_t old_begv, old_zv, old_begv_byte, old_zv_byte;
+  ptrdiff_t count = SPECPDL_INDEX ();
 
   position = clip_to_bounds (BUF_BEGV (buffer), position, BUF_ZV (buffer));
 
@@ -2163,6 +2164,7 @@ get_local_map (ptrdiff_t position, struct buffer *buffer, Lisp_Object type)
   old_begv_byte = BUF_BEGV_BYTE (buffer);
   old_zv_byte = BUF_ZV_BYTE (buffer);
 
+  specbind (Qinhibit_quit, Qt);
   SET_BUF_BEGV_BOTH (buffer, BUF_BEG (buffer), BUF_BEG_BYTE (buffer));
   SET_BUF_ZV_BOTH (buffer, BUF_Z (buffer), BUF_Z_BYTE (buffer));
 
@@ -2180,6 +2182,7 @@ get_local_map (ptrdiff_t position, struct buffer *buffer, Lisp_Object type)
 
   SET_BUF_BEGV_BOTH (buffer, old_begv, old_begv_byte);
   SET_BUF_ZV_BOTH (buffer, old_zv, old_zv_byte);
+  unbind_to (count, Qnil);
 
   /* Use the local map only if it is valid.  */
   prop = get_keymap (prop, 0, 0);