diff --git a/editors/diff.c b/editors/diff.c index a78a0ee28..c3ad31bf3 100644 --- a/editors/diff.c +++ b/editors/diff.c @@ -740,9 +740,10 @@ static int diffreg(char *file[2]) unlink(name); if (bb_copyfd_eof(fd, fd_tmp) < 0) xfunc_die(); - if (fd) /* Prevents closing of stdin */ + if (fd != STDIN_FILENO) close(fd); fd = fd_tmp; + xlseek(fd, 0, SEEK_SET); } fp[i] = fdopen(fd, "r"); } diff --git a/testsuite/diff.tests b/testsuite/diff.tests index 6de46483b..84d853852 100755 --- a/testsuite/diff.tests +++ b/testsuite/diff.tests @@ -44,6 +44,17 @@ testing "diff of stdin, twice" \ "" \ "stdin" +testing "diff of empty file against stdin" \ + "diff -u - input | $TRIM_TAB" \ +"\ +--- - ++++ input +@@ -1 +0,0 @@ +-a +" \ + "" \ + "a\n" + testing "diff of empty file against nonempty one" \ "diff -u - input | $TRIM_TAB" \ "\