In builtin_diffstat(), when both files are coming from "stdin" (which could be better described as the file's content being written directly into the file object), oideq() compares two null hashes and ignores the actual differences for the statistics. This patch checks if is_stdin flag is set on both sides and compare contents directly. Signed-off-by: Thomas Guyot-Sionnest <tguyot@xxxxxxxxx> --- diff.c | 5 ++++- t/t3206-range-diff.sh | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/diff.c b/diff.c index a5114fa864..2995527896 100644 --- a/diff.c +++ b/diff.c @@ -3681,7 +3681,10 @@ static void builtin_diffstat(const char *name_a, const char *name_b, return; } - same_contents = oideq(&one->oid, &two->oid); + if (one->is_stdin && two->is_stdin) + same_contents = !strcmp(one->data, two->data); + else + same_contents = oideq(&one->oid, &two->oid); if (diff_filespec_is_binary(o->repo, one) || diff_filespec_is_binary(o->repo, two)) { diff --git a/t/t3206-range-diff.sh b/t/t3206-range-diff.sh index e024cff65c..4715e75b68 100755 --- a/t/t3206-range-diff.sh +++ b/t/t3206-range-diff.sh @@ -258,11 +258,11 @@ test_expect_success 'changed commit with --stat diff option' ' a => b | 0 1 file changed, 0 insertions(+), 0 deletions(-) 3: $(test_oid t3) ! 3: $(test_oid c3) s/11/B/ - a => b | 0 - 1 file changed, 0 insertions(+), 0 deletions(-) + a => b | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) 4: $(test_oid t4) ! 4: $(test_oid c4) s/12/B/ - a => b | 0 - 1 file changed, 0 insertions(+), 0 deletions(-) + a => b | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) EOF test_cmp expect actual ' -- 2.20.1