← Commit list

39f017293

Denys Vlasenko
Denys Vlasenko
2015-01-11
SUCCESS Duration: 132s

Subject

diff: fix a bug in diffing against stdin. Closes 7784

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

editors/diff.c+2 -1
@@ -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");
}
testsuite/diff.tests+11 -0
@@ -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" \
"\