Jeff King <peff@xxxxxxxx> writes: > On Wed, Nov 26, 2008 at 08:51:20PM +0000, William Pursell wrote: > >> This is naive, and it is easy for an invalid >> search string to cause a perl error. >> [...] >> + if( $text !~ $search_s ) { > > Yeah, a bad regex will cause the whole program to barf. Maybe wrap it in > an eval, like this? > > my $r = eval { $text !~ $search_s }; > if ($@) { > print STDERR "error in search string: $@\n"; > next; > } > if ($r) { > ... > > Or similar (I didn't look at the code closely enough to know if "next" > is the right thing there). Use of eval is a good way to protect against this kind of breakage, but it should be done close to where the string is given by the user, perhaps in here: + elsif ($line =~ m|^/(.*)|) { + $search_s = $1; + } Something like... elsif ($line =~ m|^/(.*)|) { $search_string = $1; eval { $search_string =~ /$search_string/; }; if ($@) { print STDERR "Regexp error in $search_string: $@"; next; } ... -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html