[pypy-commit] pypy default: Issue #2805 Attempted fix

arigo pypy.commits at gmail.com
Mon Apr 23 09:04:57 EDT 2018


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r94426:321aff47be74
Date: 2018-04-23 15:04 +0200
http://bitbucket.org/pypy/pypy/changeset/321aff47be74/

Log:	Issue #2805 Attempted fix

diff --git a/pypy/interpreter/executioncontext.py b/pypy/interpreter/executioncontext.py
--- a/pypy/interpreter/executioncontext.py
+++ b/pypy/interpreter/executioncontext.py
@@ -491,11 +491,17 @@
                 # 'action.fire()' happens to be called any time before
                 # the corresponding perform(), the fire() has no
                 # effect---which is the effect we want, because
-                # perform() will be called anyway.
+                # perform() will be called anyway.  All such pending
+                # actions with _fired == True are still inside the old
+                # chained list.  As soon as we reset _fired to False,
+                # we also reset _next to None and we are ready for
+                # another fire().
                 while action is not None:
+                    next_action = action._next
+                    action._next = None
                     action._fired = False
                     action.perform(ec, frame)
-                    action._next, action = None, action._next
+                    action = next_action
 
         self.action_dispatcher = action_dispatcher
 


More information about the pypy-commit mailing list