From ccfdda027d88da9e62d72934c3ed3ed1b046a583 Mon Sep 17 00:00:00 2001 From: mattias Date: Mon, 23 Feb 2015 09:56:49 +0000 Subject: [PATCH] IDE: external tools: added TAbstractExternalTool.ReadStdOutBeforeErr, changed default to read stderr before out, needed by FPC linker errors git-svn-id: trunk@47955 - --- components/ideintf/ideexterntoolintf.pas | 2 ++ ide/exttools.pas | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/components/ideintf/ideexterntoolintf.pas b/components/ideintf/ideexterntoolintf.pas index 2a30e675f7..ee3ca7022b 100644 --- a/components/ideintf/ideexterntoolintf.pas +++ b/components/ideintf/ideexterntoolintf.pas @@ -447,6 +447,7 @@ type FFreeData: boolean; FGroup: TExternalToolGroup; FHint: string; + FReadStdOutBeforeErr: boolean; FResolveMacrosOnExecute: boolean; FThread: TThread; FWorkerDirectory: string; @@ -530,6 +531,7 @@ type property Terminated: boolean read FTerminated; property ExitStatus: integer read FExitStatus write FExitStatus; property ErrorMessage: string read FErrorMessage write FErrorMessage; // error executing tool + property ReadStdOutBeforeErr: boolean read FReadStdOutBeforeErr write FReadStdOutBeforeErr; // output property WorkerOutput: TStrings read FWorkerOutput; // the raw output diff --git a/ide/exttools.pas b/ide/exttools.pas index d1eda00500..8c03b600e1 100644 --- a/ide/exttools.pas +++ b/ide/exttools.pas @@ -1630,8 +1630,13 @@ begin StdErrLine:=''; LastUpdate:=GetTickCount64; while (Tool<>nil) and (Tool.Stage=etsRunning) do begin - HasOutput:=ReadInputPipe(Tool.Process.Output,OutputLine) - or ReadInputPipe(Tool.Process.Stderr,StdErrLine); + if Tool.ReadStdOutBeforeErr then begin + HasOutput:=ReadInputPipe(Tool.Process.Output,OutputLine) + or ReadInputPipe(Tool.Process.Stderr,StdErrLine); + end else begin + HasOutput:=ReadInputPipe(Tool.Process.Stderr,StdErrLine) + or ReadInputPipe(Tool.Process.Output,OutputLine); + end; if (not HasOutput) then begin // no more pending output if not Tool.Process.Running then break;