Jeff King <[email protected]> writes:
> Because the array is full of "undef". See parse_diff(), which does this:
>
> my @diff = run_cmd_pipe("git", @diff_cmd, "--", $path);
> ...
> @colored = run_cmd_pipe(@display_cmd);
> ...
> for (my $i = 0; $i < @diff; $i++) {
> ...
> push @{$hunk[-1]{TEXT}}, $diff[$i];
> push @{$hunk[-1]{DISPLAY}},
> (@colored ? $colored[$i] : $diff[$i]);
> }
>
> If the @colored output is shorter than the normal @diff output, we'll
> push a bunch of "undef" onto the DISPLAY array (the ternary there is
> because sometimes @colored is completely empty if the user did not ask
> for color).
An obvious sanity check would be to ensure @colored == @diff
push @{$hunk[-1]{DISPLAY}},
- (@colored ? $colored[$i] : $diff[$i]);
+ (@colored && @colored == @diff ? $colored[$i] : $diff[$i]);
}
or something like that?