massar@godot.UUCP (J.P. Massar) (02/23/85)
Fixed a regular expression bug.
Repeat by:
string: "caaad"
pattern: c[a]*d
Fix: in the procedure 'match_one_or_more' in the file e_regex.c
replace the commented out line of code with the one above it.
---------------------------------------------------------------------------
/* If the recursion didn't succeed, then does the termination */
/* condition hold at this point? If so, this is the maximal match */
if (!(more_node -> matched)) {
if (next_pat == Nil) {
set_match_bounds(more_node,start,esave);
break;
}
match_at_position(next_pat,esave + 1,Nil);
/* match_at_position(next_pat,curpos,Nil); */
if (next_pat -> matched) {
set_match_bounds(more_node,start,esave);
}
}
---------------------------------------------------------------------------
--
-- JP Massar, Thinking Machines Corporation, Cambridge, MA
-- ihnp4!godot!massar
-- massar@cca-unix