diff options
author | Adrian Thurston <thurston@colm.net> | 2023-03-12 21:10:05 -0700 |
---|---|---|
committer | Adrian Thurston <thurston@colm.net> | 2023-03-12 21:16:04 -0700 |
commit | 65540b65ff09330b0293423e3fecc44e63f30614 (patch) | |
tree | ae19fe1469d9eb623a102b861e93114c07ef7cc4 /examples/cppscan.rl | |
parent | 463f4914057b0193c6ca025e9233c17035bc0448 (diff) | |
download | ragel-master.tar.gz |
After processing the last item for a named machine, mark only those items with
the same ParseData pointer as processed. Previously, we would mark all
preceding items as processed. This is wrong and is a problem for sequences
like:
machine A // some defs
machine B // some defs
machine C // some defs
machine A // last
machine B // last
machine C // last
Once the second A block is seen, then the first A, B and C would all get marked
as processed and ready for writing, even though B and C were not complete yet.
Also, now processing items with no ParseData pointer earlier by immediately
marking them as processed and moving the last flushed pointer forward even if
we didn't process an item with a parse data pointer.
Diffstat (limited to 'examples/cppscan.rl')
0 files changed, 0 insertions, 0 deletions