handle autoloaded debugger case
authorClaus Gittinger <cg@exept.de>
Fri, 04 Oct 1996 11:21:57 +0200
changeset 745 89a242c66cda
parent 744 cb962cb21e8c
child 746 8f7d8caecf22
handle autoloaded debugger case
DebugView.st
--- a/DebugView.st	Tue Oct 01 16:46:51 1996 +0200
+++ b/DebugView.st	Fri Oct 04 11:21:57 1996 +0200
@@ -106,13 +106,29 @@
      This is the standard way of entering the debugger;
      sent from error- and halt messages."
 
-    |active|
+    |active found c|
 
     StepInterruptPending := nil.
 
     thisContext isRecursive ifTrue:[
-        ('DEBUGGER: reentered with: ', aString) errorPrintNL.
-        ^ MiniDebugger enterWithMessage:'DEBUGGER: recursive error'.
+        "/ care for the special case, were the Debugger was autoloaded.
+        "/ in this case, thisContext IS recursive, but thats no error
+        "/ condition.
+        found := false.
+        c := thisContext sender.
+        [found not
+         and:[c notNil 
+         and:[c selector ~~ #enter:withMessage:]]] whileTrue:[
+            c selector == #noByteCode ifTrue:[
+                found := true
+            ].
+            c := c sender
+        ].
+
+        found ifFalse:[
+            ('DEBUGGER: reentered with: ', aString) errorPrintNL.
+            ^ MiniDebugger enterWithMessage:'DEBUGGER: recursive error'.
+        ]
     ].
 
     "
@@ -137,7 +153,7 @@
 
     ^ self enterUnconditional:aContext withMessage:aString
 
-    "Modified: 1.7.1996 / 12:26:18 / cg"
+    "Modified: 4.10.1996 / 10:21:20 / cg"
 !
 
 enterUnconditional:aContext withMessage:aString
@@ -2641,5 +2657,5 @@
 !DebugView  class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.99 1996-07-26 14:48:32 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.100 1996-10-04 09:21:57 cg Exp $'
 ! !