diff options
author | Kyle Meyer <kyle@kyleam.com> | 2021-05-21 00:38:16 -0400 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2021-05-21 09:44:33 +0000 |
commit | 3c1d0da4d0608b5a87371e602a911964d7c1498c (patch) | |
tree | 69d3fcc1143dbefa58b9d9b9896c897590914e62 /lib/PublicInbox | |
parent | 2f720902ed702b64d918165ba21a96dabbeeca26 (diff) | |
download | public-inbox-3c1d0da4d0608b5a87371e602a911964d7c1498c.tar.gz |
When generating git-diff options, lei-rediff extracts the single character option from the lei option spec. However, there's no check that the regular expression actually matches, leading to an unintentional git-diff option when there isn't a short option (e.g., --inter-hunk-context=1 maps to the invalid `git diff --color -w1'). Check for a match before trying to extract the single character option. Fixes: cf0c7ce3ce81b5c3 (lei rediff: regenerate diffs from stdin)
Diffstat (limited to 'lib/PublicInbox')
-rw-r--r-- | lib/PublicInbox/LeiRediff.pm | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/PublicInbox/LeiRediff.pm b/lib/PublicInbox/LeiRediff.pm index 3c8ebe41..2e793df5 100644 --- a/lib/PublicInbox/LeiRediff.pm +++ b/lib/PublicInbox/LeiRediff.pm @@ -108,8 +108,9 @@ EOM push @cmd, '--'.($opt->{color} && !$opt->{'no-color'} ? '' : 'no-'). 'color'; for my $o (@PublicInbox::LEI::diff_opt) { - $o =~ s/\|([a-z0-9])\b//i; # remove single char short option - my $c = $1; + my $c = ''; + # remove single char short option + $o =~ s/\|([a-z0-9])\b//i and $c = $1; if ($o =~ s/=[is]@\z//) { my $v = $opt->{$o} or next; push @cmd, map { $c ? "-$c$_" : "--$o=$_" } @$v; |