TerminalSession.st
changeset 4641 561fd5fdf03c
parent 4639 3e5713fe4685
child 4642 695b02c145a9
--- a/TerminalSession.st	Mon Apr 30 21:38:45 2018 +0200
+++ b/TerminalSession.st	Mon Apr 30 21:53:32 2018 +0200
@@ -776,6 +776,9 @@
     StreamError handle:[:ex |
         Transcript show:'Terminal(PTY-reader) [error]: '; showCR:ex description.
     ] do:[
+        |outStreamWasNonNil|
+
+        outStreamWasNonNil := false.
         [true] whileTrue:[
             AbortOperationRequest handle:[:ex |
                 ^ self
@@ -784,8 +787,10 @@
 
                 readerDelay notNil ifTrue:[ Delay waitForSeconds:readerDelay].
                 outStream isNil ifTrue:[
+                    outStreamWasNonNil ifTrue:[^ self].
                     Delay waitForSeconds:0.1
                 ] ifFalse:[
+                    outStreamWasNonNil := true.
                     outStream readWait.
 
                     (pluggableCheckBeforeReadAction isNil
@@ -795,7 +800,6 @@
                             "/ Windows IPC has a bug - it always
                             "/ returns 0 (when the command is idle)
                             "/ and says it's at the end (sigh)
-
                             OperatingSystem isMSWINDOWSlike ifTrue:[
                                 Delay waitForSeconds:0.1
                             ] ifFalse:[
@@ -805,7 +809,6 @@
                                     Processor activeProcess terminate.
                                 ] ifFalse:[
                                     "/ this should not happen.
-
                                     Delay waitForSeconds:0.1
                                 ]
                             ].
@@ -852,6 +855,10 @@
         p terminate.
         "/ give it a chance to really terminate
         Processor yield.
+        "/ read any remaining data
+        (self readAnyAvailableData > 0) ifTrue:[
+            self halt:'to check if this solves the make problem'.
+        ].
     ].
 ! !