Fix \K within recursion bug in interpreter.
This commit is contained in:
parent
b6acebe497
commit
2c4d3942e4
|
@ -35,6 +35,10 @@ now runs clean and the resulting "configure" seems to work, so I hope nothing
|
|||
is broken. Later: the requirement for autoconf 2.70 broke some automatic test
|
||||
robots. It doesn't seem to be necessary: trying a reduction to 2.60.
|
||||
|
||||
6. The pattern /a\K.(?0)*/ when matched against "abac" by the interpreter gave
|
||||
the answer "bac", whereas Perl and JIT both yield "c". This was because the
|
||||
effect of \K was not propagating back from the recursion. This is now fixed.
|
||||
|
||||
|
||||
Version 10.36 04-December-2020
|
||||
------------------------------
|
||||
|
|
|
@ -818,10 +818,12 @@ fprintf(stderr, "++ op=%d\n", *Fecode);
|
|||
|
||||
/* N is now the frame of the recursion; the previous frame is at the
|
||||
OP_RECURSE position. Go back there, copying the current subject position
|
||||
and mark, and move on past the OP_RECURSE. */
|
||||
and mark, and the start_match position (\K might have changed it), and
|
||||
then move on past the OP_RECURSE. */
|
||||
|
||||
P->eptr = Feptr;
|
||||
P->mark = Fmark;
|
||||
P->start_match = Fstart_match;
|
||||
F = P;
|
||||
Fecode += 1 + LINK_SIZE;
|
||||
continue;
|
||||
|
|
|
@ -6429,4 +6429,7 @@ ef) x/x,mark
|
|||
/a{65536/
|
||||
>a{65536<
|
||||
|
||||
/a\K.(?0)*/
|
||||
abac
|
||||
|
||||
# End of testinput1
|
||||
|
|
|
@ -10188,4 +10188,8 @@ No match
|
|||
>a{65536<
|
||||
0: a{65536
|
||||
|
||||
/a\K.(?0)*/
|
||||
abac
|
||||
0: c
|
||||
|
||||
# End of testinput1
|
||||
|
|
Loading…
Reference in New Issue