From 47d5c78d99b318f1f3d2c8e487211817b91633e7 Mon Sep 17 00:00:00 2001 From: geisserml Date: Sun, 25 Sep 2022 15:15:07 +0200 Subject: [PATCH] closing: check self before parents --- src/pypdfium2/_helpers/document.py | 10 +++++++--- src/pypdfium2/_helpers/page.py | 4 +++- src/pypdfium2/_helpers/textpage.py | 8 ++++++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/pypdfium2/_helpers/document.py b/src/pypdfium2/_helpers/document.py index 60b7b5482..29aae0471 100644 --- a/src/pypdfium2/_helpers/document.py +++ b/src/pypdfium2/_helpers/document.py @@ -146,7 +146,9 @@ def __del__(self): def _skip_close(self): - return (self.raw is None) + if self.raw is None: + return True + return False def close(self): """ @@ -157,7 +159,7 @@ def close(self): """ if self._skip_close(): - return # self is closed already, or exception on construction + return self.exit_formenv() pdfium.FPDF_CloseDocument(self.raw) @@ -598,9 +600,11 @@ def __del__(self): def _skip_close(self): + if self.raw is None: + return True if self.pdf._skip_close(): return True - return (self.raw is None) + return False def close(self): """ diff --git a/src/pypdfium2/_helpers/page.py b/src/pypdfium2/_helpers/page.py index 8d5b6c5ce..b3f465294 100644 --- a/src/pypdfium2/_helpers/page.py +++ b/src/pypdfium2/_helpers/page.py @@ -50,9 +50,11 @@ def __del__(self): def _skip_close(self): + if self.raw is None: + return True if self.pdf._skip_close(): return True - return (self.raw is None) + return False def close(self): """ diff --git a/src/pypdfium2/_helpers/textpage.py b/src/pypdfium2/_helpers/textpage.py index 5b3bcf9d9..c6e2ba939 100644 --- a/src/pypdfium2/_helpers/textpage.py +++ b/src/pypdfium2/_helpers/textpage.py @@ -25,9 +25,11 @@ def __del__(self): def _skip_close(self): + if self.raw is None: + return True if self.page._skip_close(): return True - return (self.raw is None) + return False def close(self): """ @@ -242,9 +244,11 @@ def __del__(self): def _skip_close(self): + if self.raw is None: + return True if self.textpage._skip_close(): return True - return (self.raw is None) + return False def close(self): """