From a6b8039db45dcb32e0acc5d5815a7e228d7c453f Mon Sep 17 00:00:00 2001 From: Youness Alaoui Date: Sat, 27 Dec 2014 18:01:42 -0500 Subject: [PATCH] Check for EOF on the serialCommunication module If Cura has terminated, stdin will be in EOF which will cause the readline to return an empty string. By catching that, we will be abl to quit instead of spamming stderr with ['']. Fixes #63 and possibly issue #45 as well. --- Cura/serialCommunication.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Cura/serialCommunication.py b/Cura/serialCommunication.py index efff5e0d..efc6e72d 100644 --- a/Cura/serialCommunication.py +++ b/Cura/serialCommunication.py @@ -51,9 +51,14 @@ class serialComm(object): pass def monitorStdin(self): - while not self._comm.isClosed(): - line = sys.stdin.readline().strip() - line = line.split(':', 1) + while not (self._comm.isClosed() or sys.stdin.closed): + line = sys.stdin.readline() + # If readline returns an empty string it means that + # we've hit stdin's EOF, probably because the parent was + # closed, so we need to exit as well instead of spamming stderr. + if line == '': + break + line = line.strip().split(':', 1) if line[0] == 'STOP': self._comm.cancelPrint() self._gcodeList = ['M110'] -- 2.30.2