Author: Armin Rigo <ar...@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 _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit