This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Don't try to compile a pattern known to be in error
authorKarl Williamson <khw@cpan.org>
Tue, 14 Feb 2017 02:01:46 +0000 (19:01 -0700)
committerKarl Williamson <khw@cpan.org>
Tue, 14 Feb 2017 04:24:10 +0000 (21:24 -0700)
commitf065e1e68bf6a5541c8ceba8c9fcc6e18f51a32b
treee5eb48b118b39cae84c6d853ed0ff80c584de72c
parentd43328d502ac91c4d98e218d0721cd5f3bcd3950
Don't try to compile a pattern known to be in error

Regular expression patterns are parsed by the lexer/toker, and then
compiled by the regex compiler.  It is foolish to try to compile one
that the parser has rejected as syntactically bad; assumptions may be
violated and segfaults ensue.  This commit abandons all parsing
immediately if a pattern had errors in it.  A better solution would be
to flag this pattern as not to be compiled, and continue parsing other
things so as to find the most errors in a single attempt, but I don't
think it's worth the extra effort.

Making this change caused some misleading error messages in the test
suite to be replaced by better ones.
t/re/re_tests
toke.c