From c07ce55581b14ed141b42f99f932eb712d541cf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Mon, 15 Nov 2021 15:36:26 +0100 Subject: [PATCH] Fix stderr/stdin confusion and avoid crash on fdopen --- src/widgets/ConsoleWidget.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/widgets/ConsoleWidget.cpp b/src/widgets/ConsoleWidget.cpp index 92638534..db378068 100644 --- a/src/widgets/ConsoleWidget.cpp +++ b/src/widgets/ConsoleWidget.cpp @@ -424,7 +424,9 @@ void ConsoleWidget::processQueuedOutput() while (pipeSocket->canReadLine()) { QString output = QString(pipeSocket->readLine()); - fprintf(origStderr, "%s", output.toStdString().c_str()); + if (origStderr) { + fprintf(origStderr, "%s", output.toStdString().c_str()); + } // Get the last segment that wasn't overwritten by carriage return output = output.trimmed(); @@ -449,7 +451,7 @@ void ConsoleWidget::redirectOutput() pipeSocket = new QLocalSocket(this); - origStdin = fdopen(dup(fileno(stderr)), "r"); + origStdin = fdopen(dup(fileno(stdin)), "r"); origStderr = fdopen(dup(fileno(stderr)), "a"); origStdout = fdopen(dup(fileno(stdout)), "a"); #ifdef Q_OS_WIN