Fw: Bug#180914: sed: Another .* crash
Paolo Bonzini
paolo.bonzini@polimi.it
Wed Feb 19 13:31:00 GMT 2003
> Then, regarding the bug of \'.* regex, I think your analysis is quite
> right. duplicate_node_closure fails to keep the constraint in this case.
Hmmm... are you sure? :-)
Thinking more about it, it looks like check_halt_node_context checks if the
constraint is satisfied for the *last* character (after the DFA has halted),
while the transition table includes the check for the constraint being
satisfied *before* a transition. Take \>.* instead of \'.* (both because it
works and because it makes sense): the DFA is the same as what I had posted
earlier, with the interesting part being
node 1 (. without constraints)
transition to 2
node 2 (* without constraints)
epsilon transition to 1
node 4 (* with \> constraint)
epsilon transition to 5
node 5 (. with \> constraint)
transition to 2
After we transit out of node 5, there is no longer the need to satisfy \> (for
"abc def", after the space does the transition to 2 we need to match
everything until the end, independent of the context). So the transition to
2 is not bogus!
The bug is that build_trtable that is incorrectly building the transition
table for . instead of \'. (while it is building the table for \>.
correctly).
Paolo
More information about the Libc-alpha
mailing list