From 3c1d0da4d0608b5a87371e602a911964d7c1498c Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Fri, 21 May 2021 00:38:16 -0400 Subject: lei rediff: fix construction of git-diff options 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) --- lib/PublicInbox/LeiRediff.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/PublicInbox/LeiRediff.pm') 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; -- cgit v1.2.3-24-ge0c7