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: