]> git.eshelyaron.com Git - emacs.git/commitdiff
CC Mode: Fix the handling of two adjacent after-change-functionses.
authorAlan Mackenzie <acm@muc.de>
Wed, 4 Mar 2020 21:17:04 +0000 (21:17 +0000)
committerAlan Mackenzie <acm@muc.de>
Wed, 4 Mar 2020 21:17:04 +0000 (21:17 +0000)
The bug involved failing to set c-new-END correctly, which lead to an
args-out-of-range error when after-change-functions was invoked twice without
an intervening invocation of before-change-functions.

* lisp/progmodes/cc-mode.el (c-after-change): Correct a coding error in the
handling of c-just-done-before-change.

lisp/progmodes/cc-mode.el

index 9f95a9ce48b09509dceaa065e02ea102d40faaeb..fd7750b0d82fd2f1d3e5c11b4b54cbf72490c697 100644 (file)
@@ -1992,17 +1992,16 @@ Note that this is a strict tail, so won't match, e.g. \"0x....\".")
 
   ;; Note: c-just-done-before-change is nil, t, or 'whole-buffer.
   (unless (c-called-from-text-property-change-p)
-    (save-restriction
-      (widen)
-      (unless c-just-done-before-change
-       (c-before-change (point-min) (point-max)))
-      (unless (eq c-just-done-before-change t)
+    (unless (eq c-just-done-before-change t)
+      (save-restriction
+       (widen)
+       (when (null c-just-done-before-change)
+         (c-before-change (point-min) (point-max)))
        (setq beg (point-min)
              end (point-max)
              old-len (- end beg)
              c-new-BEG (point-min)
-             c-new-END (point-max)))
-      (setq c-just-done-before-change nil)))
+             c-new-END (point-max)))))
 
   ;; (c-new-BEG c-new-END) will be the region to fontify.  It may become
   ;; larger than (beg end).