Re: [PATCH 1/2] Add / command in add --patch (feature request)
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 26, 2008, 22:54 UTC
- Message-ID
- <7vod02cd3p.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <20081126223858.GB10786@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 20 quoted lines
> 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;
}
...