only initialize the data late

This commit is contained in:
q66 2017-05-08 20:38:46 +02:00
parent 5d16d8fd87
commit 045a280c56

View file

@ -201,9 +201,6 @@ OSTD_EXPORT void subprocess::open_impl(
} }
argp[args.size()] = nullptr; argp[args.size()] = nullptr;
p_current = ::new (reinterpret_cast<void *>(&p_data)) data{};
data *pd = static_cast<data *>(p_current);
/* fd_errno used to detect if exec failed */ /* fd_errno used to detect if exec failed */
pipe fd_errno, fd_stdin, fd_stdout, fd_stderr; 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.close(true);
fd_stderr.fdopen(err, false); fd_stderr.fdopen(err, false);
} }
p_current = ::new (reinterpret_cast<void *>(&p_data)) data{};
data *pd = static_cast<data *>(p_current);
pd->pid = int(cpid); pd->pid = int(cpid);
pd->errno_fd = std::exchange(fd_errno[1], -1); pd->errno_fd = std::exchange(fd_errno[1], -1);
} }