On Wed, Feb 22, 2006 at 10:06:22PM -0600, Patrick R. Michaud wrote: > Based on the trace I just looked at, it appears that a save opcode > executed inside a coroutine -- the coroutine generated to handle > the <after c> subrule -- is indeed affecting the results of a > restore in the caller and causing an infinite loop. In particular, > I'm seeing the following sequence...
Just in case it makes a difference, I should also note that the call to the coroutine is nested inside of a couple of other sub invocations. So, a more complete picture goes something like: ... save I1 (trace shows I1=1) invoke PGE::Rule::after invoke "[c]$" subrule invoke coroutine for "[c]$" subrule I1 = 0 save I1 (trace shows I1=0) ... yield from "[c]$" coroutine return from "[c]$" subrule return from PGE::Rule::after restore I1 inc I1 (trace shows I1=0 (!)) Pm