diff options
Diffstat (limited to 'src/corelib/io/qprocess_unix.cpp')
-rw-r--r-- | src/corelib/io/qprocess_unix.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index 3d223bb725..b6757e5b79 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -916,18 +916,18 @@ bool QProcessPrivate::startDetached(qint64 *pid) qt_safe_close(startedPipe[0]); qt_safe_close(pidPipe[0]); - pid_t doubleForkPid = fork(); + pid_t doubleForkPid = 0; + if (!encodedWorkingDirectory.isEmpty()) + doubleForkPid = QT_CHDIR(encodedWorkingDirectory.constData()); + + if (doubleForkPid == 0) + doubleForkPid = fork(); if (doubleForkPid == 0) { qt_safe_close(pidPipe[1]); // Render channels configuration. commitChannels(); - if (!encodedWorkingDirectory.isEmpty()) { - if (QT_CHDIR(encodedWorkingDirectory.constData()) == -1) - qWarning("QProcessPrivate::startDetached: failed to chdir to %s", encodedWorkingDirectory.constData()); - } - char **argv = new char *[arguments.size() + 2]; for (int i = 0; i < arguments.size(); ++i) argv[i + 1] = ::strdup(QFile::encodeName(arguments.at(i)).constData()); |