]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix void-variable n-reb in re-builder (Bug#40409)
authorNoam Postavsky <npostavs@gmail.com>
Sat, 4 Apr 2020 16:00:41 +0000 (12:00 -0400)
committerNoam Postavsky <npostavs@gmail.com>
Sun, 5 Apr 2020 00:06:54 +0000 (20:06 -0400)
* lisp/emacs-lisp/re-builder.el (reb-while): Take the current value of
the counter instead of its name.
(reb-mark-non-matching-parenthesis): Bind n-reb to 0 at the start and
don't wrongly treat it as dynamicly bound.

lisp/emacs-lisp/re-builder.el

index 580e91483db3854d7684b56071c8b1c18be9ec1a..0e1618e010a52845937baff8e94220b2da1e9bae 100644 (file)
@@ -767,22 +767,21 @@ If SUBEXP is non-nil mark only the corresponding sub-expressions."
      (reb-mark-non-matching-parenthesis))
     nil)))
 
-(defsubst reb-while (limit counter where)
-  (let ((count (symbol-value counter)))
-    (if (= count limit)
-        (progn
-          (message "Reached (while limit=%s, where=%s)" limit where)
-          nil)
-      (set counter (1+ count)))))
+(defsubst reb-while (limit current where)
+  (if (< current limit)
+      (1+ current)
+    (message "Reached (while limit=%s, where=%s)" limit where)
+    nil))
 
 (defun reb-mark-non-matching-parenthesis (bound)
   ;; We have a small string, check the whole of it, but wait until
   ;; everything else is fontified.
   (when (>= bound (point-max))
-    (let (left-pars
+    (let ((n-reb 0)
+          left-pars
           faces-here)
       (goto-char (point-min))
-      (while (and (reb-while 100 'n-reb "mark-par")
+      (while (and (setq n-reb (reb-while 100 n-reb "mark-par"))
                   (not (eobp)))
         (skip-chars-forward "^()")
         (unless (eobp)