Fix output file size estimation.
[cumulus.git] / store.cc
index 0b03493..ba6d692 100644 (file)
--- a/store.cc
+++ b/store.cc
@@ -96,7 +96,6 @@ FileFilter *FileFilter::New(int fd, const char *program)
 
     pid_t pid;
     int wrapped_fd = spawn_filter(fd, program, &pid);
-    close(fd);
     return new FileFilter(fd, wrapped_fd, pid);
 }
 
@@ -106,6 +105,10 @@ int FileFilter::wait()
     if (pid == -1)
         return 0;
 
+    // The raw file descriptor was held open to track the output file size, but
+    // is not needed any longer.
+    close(fd_raw);
+
     int status;
     if (waitpid(pid, &status, 0) < 0) {
         fprintf(stderr, "Error waiting for filter process: %m\n");