Browse Source

mail: launch_helper(): flush stdio before vfork, set G.helper_pid only in parent

function                                             old     new   delta
launch_helper                                        188     193      +5

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Denys Vlasenko 3 years ago
parent
commit
cd48f07117
1 changed files with 3 additions and 1 deletions
  1. 3 1
      mailutils/mail.c

+ 3 - 1
mailutils/mail.c

@@ -46,7 +46,8 @@ void FAST_FUNC launch_helper(const char **argv)
 		+ (1 << SIGALRM)
 		, signal_handler);
 
-	G.helper_pid = pid = xvfork();
+	fflush_all();
+	pid = xvfork();
 	if (pid == 0) {
 		// child
 		close(child_in.wr);
@@ -59,6 +60,7 @@ void FAST_FUNC launch_helper(const char **argv)
 		// NB: SIGCHLD & SIGALRM revert to SIG_DFL on exec
 		BB_EXECVP_or_die((char**)argv);
 	}
+	G.helper_pid = pid;
 	close(child_out.wr);
 	close(child_in.rd);
 	xmove_fd(child_out.rd, STDIN_FILENO);