Bug 601: When we fork an archiver and feed stuff to it through a pipe, if
we don't close the pipe the child process won't exit, and we'll hang in
waitpid().
diff --git a/archival/tar.c b/archival/tar.c
index b296746..cd89a75 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -513,11 +513,12 @@
* but that isn't necessary for GNU tar interoperability, and
* so is considered a waste of space */
+ /* Close so the child process (if any) will exit */
+ close(tbInfo.tarFd);
+
/* Hang up the tools, close up shop, head home */
- if (ENABLE_FEATURE_CLEAN_UP) {
- close(tbInfo.tarFd);
+ if (ENABLE_FEATURE_CLEAN_UP)
freeHardLinkInfo(&tbInfo.hlInfoHead);
- }
if (errorFlag)
bb_error_msg("Error exit delayed from previous errors");