From 6a2ebadbabb3b67b88cd80cea1545f89cedadf0a Mon Sep 17 00:00:00 2001 Message-Id: <6a2ebadbabb3b67b88cd80cea1545f89cedadf0a.1715349440.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sat, 15 May 2010 19:42:08 +0100 Subject: [PATCH] py/rmcr.py: Handle stray exceptions from coroutines more sensibly. Organization: Straylight/Edgeware From: Mark Wooding With a little luck this means that they won't just vanish silently. --- py/rmcr.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/py/rmcr.py b/py/rmcr.py index f73a6cc9..70df8f3a 100644 --- a/py/rmcr.py +++ b/py/rmcr.py @@ -29,7 +29,7 @@ __pychecker__ = 'self=me' ### External dependencies. import thread as T -from sys import exc_info +from sys import exc_info, excepthook ###-------------------------------------------------------------------------- ### What's going on? @@ -134,11 +134,11 @@ class Coroutine (object): try: _debug(' _start(%s): call user (args = %s, kwargs = %s)' % (me, args, kwargs)) - me._func(*args, **kwargs) + me._onexit = [me._func(*args, **kwargs), None] except: exc = exc_info() _debug(' _start(%s): caught exception (%s)' % (me, exc)) - _switchto(findvictim(me.parent), None, exc) + me._onexit = [None, exc] finally: _debug(' _start(%s): finally' % me) _debug(' _start(%s): _onexit = %s' % (me, me._onexit)) -- [mdw]