]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix edebug--restore-breakpoints re-instrumentinging bug-out
authorLars Ingebrigtsen <larsi@gnus.org>
Sun, 20 Oct 2019 12:27:38 +0000 (14:27 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 20 Oct 2019 12:27:38 +0000 (14:27 +0200)
* lisp/emacs-lisp/edebug.el (edebug--restore-breakpoints): Don't
bug out when instrumenting/de-instrumenting/re-instrumenting.

lisp/emacs-lisp/edebug.el

index a3ab23c1a1ed8e75fe943b350fbce09af3b2b366..2eceb82371671ef5503972079936ffe3215e3c8a 100644 (file)
@@ -1415,23 +1415,24 @@ contains a circular object."
       )))
 
 (defun edebug--restore-breakpoints (name)
-  (let* ((data (get name 'edebug))
-         (offsets (nth 2 data))
-         (breakpoints (nth 1 data))
-         (start (nth 0 data))
-         index)
-    ;; Breakpoints refer to offsets from the start of the function.
-    ;; The start position is a marker, so it'll move around in a
-    ;; similar fashion as the breakpoint markers.  If we find a
-    ;; breakpoint marker that refers to an offset (which is a place
-    ;; where breakpoints can be made), then we restore it.
-    (cl-loop for breakpoint in breakpoints
-             for marker = (nth 3 breakpoint)
-             when (and (marker-position marker)
-                       (setq index (seq-position
-                                    offsets
-                                    (- (marker-position marker) start))))
-             collect (cons index (cdr breakpoint)))))
+  (let ((data (get name 'edebug)))
+    (when (listp data)
+      (let ((offsets (nth 2 data))
+            (breakpoints (nth 1 data))
+            (start (nth 0 data))
+            index)
+        ;; Breakpoints refer to offsets from the start of the function.
+        ;; The start position is a marker, so it'll move around in a
+        ;; similar fashion as the breakpoint markers.  If we find a
+        ;; breakpoint marker that refers to an offset (which is a place
+        ;; where breakpoints can be made), then we restore it.
+        (cl-loop for breakpoint in breakpoints
+                 for marker = (nth 3 breakpoint)
+                 when (and (marker-position marker)
+                           (setq index (seq-position
+                                        offsets
+                                        (- (marker-position marker) start))))
+                 collect (cons index (cdr breakpoint)))))))
 
 (defun edebug-new-definition (def-name)
   "Set up DEF-NAME to use Edebug's instrumentation functions."