From 045a280c56000a0897b08121ba7d8ad8d856463b Mon Sep 17 00:00:00 2001 From: q66 Date: Mon, 8 May 2017 20:38:46 +0200 Subject: [PATCH] only initialize the data late --- src/process.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/process.cc b/src/process.cc index d61c725..14aaede 100644 --- a/src/process.cc +++ b/src/process.cc @@ -201,9 +201,6 @@ OSTD_EXPORT void subprocess::open_impl( } argp[args.size()] = nullptr; - p_current = ::new (reinterpret_cast(&p_data)) data{}; - data *pd = static_cast(p_current); - /* fd_errno used to detect if exec failed */ pipe fd_errno, fd_stdin, fd_stdout, fd_stderr; @@ -270,6 +267,8 @@ OSTD_EXPORT void subprocess::open_impl( fd_stderr.close(true); fd_stderr.fdopen(err, false); } + p_current = ::new (reinterpret_cast(&p_data)) data{}; + data *pd = static_cast(p_current); pd->pid = int(cpid); pd->errno_fd = std::exchange(fd_errno[1], -1); }