From d7de93a5004a44ea2a8c1b22aa4bd865dc4a355b Mon Sep 17 00:00:00 2001
From: Basile Burg <basile.b@gmx.com>
Date: Thu, 10 Nov 2016 13:48:32 +0100
Subject: [PATCH] upstream fix, false err after listing imports

---
 src/ce_common.pas   | 2 +-
 src/ce_dastworx.pas | 4 ++--
 src/ce_libman.pas   | 2 ++
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/ce_common.pas b/src/ce_common.pas
index 2eff3482..1dd50b38 100644
--- a/src/ce_common.pas
+++ b/src/ce_common.pas
@@ -1319,10 +1319,10 @@ begin
     LoadFromStream(proc.Stderr);
     Insert(0, format('%s crashed with code: %d',
       [shortenPath(proc.Executable), proc.ExitStatus]));
+    str += ReplaceStr(Text, #0, #10);
     str += 'parameters:'#10;
     str += proc.Parameters.Text;
     str += 'stderr:'#10;
-    str += ReplaceStr(Text, #0, #10);
     raise Exception.Create(str);
   finally
     free;
diff --git a/src/ce_dastworx.pas b/src/ce_dastworx.pas
index 9927c62b..997805de 100644
--- a/src/ce_dastworx.pas
+++ b/src/ce_dastworx.pas
@@ -51,9 +51,9 @@ begin
     prc.Input.Write(str[1], str.length);
     prc.CloseInput;
     processOutputToStrings(prc, imports);
+    while prc.Running do ;
     // TODO-cmaintenance: remove this from version 3 gold
     tryRaiseFromStdErr(prc);
-    while prc.Running do ;
   finally
     prc.free;
   end;
@@ -77,9 +77,9 @@ begin
     prc.Execute;
     prc.CloseInput;
     processOutputToStrings(prc, results);
+    while prc.Running do ;
     // TODO-cmaintenance: remove this from version 3 gold
     tryRaiseFromStdErr(prc);
-    while prc.Running do ;
   finally
     prc.free;
   end;
diff --git a/src/ce_libman.pas b/src/ce_libman.pas
index 78922387..fc99d43c 100644
--- a/src/ce_libman.pas
+++ b/src/ce_libman.pas
@@ -194,6 +194,7 @@ end;
 
 function TLibraryItem.getModule(const value: string): TModuleInfo;
 begin
+  //TODO-cFCL/LCL: use THashMap.GetValue from next FPC rlz
   result := nil;
   if fModulesByName.contains(value) then
     exit(fModulesByName.GetData(value));
@@ -429,6 +430,7 @@ end;
 
 function TLibraryManager.getLibraryByAlias(const value: string): TLibraryItem;
 begin
+  //TODO-cFCL/LCL: use THashMap.GetValue from next FPC rlz
   result := nil;
   if fItemsByAlias.contains(value) then
     exit(fItemsByAlias.GetData(value));