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

Reply via email to