commit: 58cb50d4c9d318d164ed991cd4b60066c8646205
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 24 04:29:46 2020 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Jun 24 04:32:26 2020 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=58cb50d4
PipeLogger._unregister: sanity check for closed file or loop
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>
lib/portage/util/_async/PipeLogger.py | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/lib/portage/util/_async/PipeLogger.py
b/lib/portage/util/_async/PipeLogger.py
index 4271c8ee2..cc746bf52 100644
--- a/lib/portage/util/_async/PipeLogger.py
+++ b/lib/portage/util/_async/PipeLogger.py
@@ -162,15 +162,15 @@ class PipeLogger(AbstractPollTask):
def _unregister(self):
if self.input_fd is not None:
if isinstance(self.input_fd, int):
- self.scheduler.remove_reader(self.input_fd)
os.close(self.input_fd)
- else:
+ elif not self.input_fd.closed:
self.scheduler.remove_reader(self.input_fd.fileno())
self.input_fd.close()
self.input_fd = None
if self._io_loop_task is not None:
- self._io_loop_task.done() or self._io_loop_task.cancel()
+ if not self.scheduler.is_closed():
+ self._io_loop_task.done() or
self._io_loop_task.cancel()
self._io_loop_task = None
if self.stdout_fd is not None:
@@ -178,8 +178,9 @@ class PipeLogger(AbstractPollTask):
self.stdout_fd = None
if self._log_file is not None:
- self.scheduler.remove_writer(self._log_file.fileno())
- self._log_file.close()
+ if not self._log_file.closed:
+
self.scheduler.remove_writer(self._log_file.fileno())
+ self._log_file.close()
self._log_file = None
if self._log_file_real is not None: