Jeff King <peff@xxxxxxxx> 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?