From cb2be3774a0821d7a37fcacbce3ebda9dbb21587 Mon Sep 17 00:00:00 2001
From: wlott <wlott>
Date: Mon, 15 Feb 1993 20:32:10 +0000
Subject: [PATCH] Changed HANDLE-BREAKPOINT to allow breakpoints that nobody
 wants.  This can happen if a function-end breakpoint was deactivated while
 the function was on the stack, because there is no way to convert the
 bogus-lra back into the real lra.

---
 code/debug-int.lisp | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/code/debug-int.lisp b/code/debug-int.lisp
index 76eb58772..e6f9b53d1 100644
--- a/code/debug-int.lisp
+++ b/code/debug-int.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/debug-int.lisp,v 1.55 1993/01/15 02:25:33 wlott Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/debug-int.lisp,v 1.56 1993/02/15 20:32:10 wlott Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -3297,9 +3297,8 @@
 	      (debug-function-name (debug-function-from-pc component offset))
 	      offset))
     (let ((breakpoints (breakpoint-data-breakpoints data)))
-      (unless breakpoints
-	(error "Breakpoint that nobody wants?"))
-      (if (eq (breakpoint-kind (car breakpoints)) :function-end)
+      (if (or (null breakpoints)
+	      (eq (breakpoint-kind (car breakpoints)) :function-end))
 	  (handle-function-end-breakpoint-aux breakpoints data signal-context)
 	  (handle-breakpoint-aux breakpoints data
 				 offset component signal-context)))))
@@ -3317,6 +3316,8 @@
 ;;; This handles code-location and debug-function :function-start breakpoints.
 ;;;
 (defun handle-breakpoint-aux (breakpoints data offset component signal-context)
+  (unless breakpoints
+    (error "Breakpoint that nobody wants?"))
   (unless (member data *executing-breakpoint-hooks*)
     (let ((*executing-breakpoint-hooks* (cons data
 					      *executing-breakpoint-hooks*)))
@@ -3355,17 +3356,16 @@
 
 ;;; HANDLE-FUNCTION-END-BREAKPOINT -- Internal Interface
 ;;; 
-(defun handle-function-end-breakpoint (offset component signal-context)
+(defun handle-function-end-breakpoint (offset component sigcontext)
   (let ((data (breakpoint-data component offset nil)))
     (unless data
       (error "Unknown breakpoint in ~S at offset ~S."
 	      (debug-function-name (debug-function-from-pc component offset))
 	      offset))
     (let ((breakpoints (breakpoint-data-breakpoints data)))
-      (unless breakpoints
-	(error "Breakpoint that nobody wants?"))
-      (assert (eq (breakpoint-kind (car breakpoints)) :function-end))
-      (handle-function-end-breakpoint-aux breakpoints data signal-context))))
+      (when breakpoints
+	(assert (eq (breakpoint-kind (car breakpoints)) :function-end))
+	(handle-function-end-breakpoint-aux breakpoints data sigcontext)))))
 
 ;;; HANDLE-FUNCTION-END-BREAKPOINT-AUX -- Internal.
 ;;;
-- 
GitLab