--- a/GenericException.st Fri May 24 20:13:53 2013 +0200
+++ b/GenericException.st Fri May 24 20:14:44 2013 +0200
@@ -1689,9 +1689,12 @@
|con|
con := handlerContext.
- thisContext evaluateUnwindActionsUpTo:con.
handlerContext := suspendedContext := raiseContext := nil.
- con restart
+ con unwindAndRestart.
+
+"/ thisContext evaluateUnwindActionsUpTo:con.
+"/ handlerContext := suspendedContext := raiseContext := nil.
+"/ con restart
"
|rslt n|
@@ -1722,9 +1725,11 @@
"/ ].
con receiver handlerProtectedBlock:aBlock inContext:con.
- thisContext evaluateUnwindActionsUpTo:con.
+"/ thisContext evaluateUnwindActionsUpTo:con.
+"/ handlerContext := suspendedContext := raiseContext := nil.
+"/ con restart
handlerContext := suspendedContext := raiseContext := nil.
- con restart
+ con unwindAndRestart.
"
|sig rslt|
@@ -1797,7 +1802,7 @@
return
"Continue after the handle:do: - the handle:do: returns nil"
- |con|
+ |con value|
con := handlerContext.
"/ cg: moving the following clearing of the handlerContext
@@ -1809,10 +1814,11 @@
"/ these are unmarkedForUnwind anyway, so there should be no danger
"/ for endless recursion here... (i.e. each unwind action can at most
"/ reraise that exception once).
+ value := self defaultReturnValue. "/ evaluate before unwinding
handlerContext := suspendedContext := raiseContext := nil.
thisContext evaluateUnwindActionsUpTo:con.
"/ handlerContext := suspendedContext := raiseContext := nil.
- con return:(self defaultReturnValue)
+ con return:value
"Modified: / 7.9.2001 / 13:29:34 / cg"
!
@@ -2350,11 +2356,11 @@
!GenericException class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.139 2013-05-21 20:26:48 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.140 2013-05-24 18:14:44 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.139 2013-05-21 20:26:48 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.140 2013-05-24 18:14:44 cg Exp $'
! !