forked from platformio/platformio-core
Do not remove thread buffers, reset them instead
This commit is contained in:
@ -49,14 +49,12 @@ class MultiThreadingStdStream(object):
|
|||||||
return self._buffers[thread_id].write(
|
return self._buffers[thread_id].write(
|
||||||
value.decode() if is_bytes(value) else value)
|
value.decode() if is_bytes(value) else value)
|
||||||
|
|
||||||
def get_value_and_close(self):
|
def get_value_and_reset(self):
|
||||||
thread_id = thread_get_ident()
|
|
||||||
result = ""
|
result = ""
|
||||||
try:
|
try:
|
||||||
result = self.getvalue()
|
result = self.getvalue()
|
||||||
self.close()
|
self.truncate(0)
|
||||||
if thread_id in self._buffers:
|
self.seek(0)
|
||||||
del self._buffers[thread_id]
|
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
return result
|
return result
|
||||||
@ -88,11 +86,10 @@ class PIOCoreRPC(object):
|
|||||||
def _call_inline():
|
def _call_inline():
|
||||||
with util.cd((options or {}).get("cwd") or os.getcwd()):
|
with util.cd((options or {}).get("cwd") or os.getcwd()):
|
||||||
exit_code = __main__.main(["-c"] + args)
|
exit_code = __main__.main(["-c"] + args)
|
||||||
return (PIOCoreRPC.thread_stdout.get_value_and_close(),
|
return (PIOCoreRPC.thread_stdout.get_value_and_reset(),
|
||||||
PIOCoreRPC.thread_stderr.get_value_and_close(), exit_code)
|
PIOCoreRPC.thread_stderr.get_value_and_reset(), exit_code)
|
||||||
|
|
||||||
d = threads.deferToThread(_call_inline)
|
d = threads.deferToThread(_call_inline)
|
||||||
|
|
||||||
d.addCallback(PIOCoreRPC._call_callback, "--json-output" in args)
|
d.addCallback(PIOCoreRPC._call_callback, "--json-output" in args)
|
||||||
d.addErrback(PIOCoreRPC._call_errback)
|
d.addErrback(PIOCoreRPC._call_errback)
|
||||||
return d
|
return d
|
||||||
|
Reference in New Issue
Block a user