perform_task: fix issue #4: don’t close file descriptors given by caller
authorReuben Thomas <rrt@sc3d.org>
Fri, 3 Aug 2018 06:19:47 +0000 (07:19 +0100)
committerReuben Thomas <rrt@sc3d.org>
Fri, 3 Aug 2018 06:19:47 +0000 (07:19 +0100)
src/task.c

index 3ec49515498b1de57ed424acfed56d0444f78524..962a4fb5424eff21add401394cb575a8fcfd819d 100644 (file)
@@ -422,13 +422,13 @@ recode_perform_task (RECODE_TASK task)
   /* Final clean up.  */
  exit:
 
-  if (subtask->input.file && fclose (subtask->input.file) != 0)
+  if (subtask->input.file && subtask->input.file != task->input.file && fclose (subtask->input.file) != 0)
     {
       recode_perror (NULL, "fclose (%s)", subtask->input.name ? subtask->input.name : "stdin");
       recode_if_nogo (RECODE_SYSTEM_ERROR, subtask);
     }
 
-  if (subtask->output.file && fclose (subtask->output.file) != 0)
+  if (subtask->output.file && subtask->output.file != task->output.file && fclose (subtask->output.file) != 0)
     {
       recode_perror (NULL, "fclose (%s)", subtask->output.name ? subtask->output.name : "stdout");
       recode_if_nogo (RECODE_SYSTEM_ERROR, subtask);