diff --git a/kconfiglib.py b/kconfiglib.py index 4506296..ce40eb7 100644 --- a/kconfiglib.py +++ b/kconfiglib.py @@ -1087,10 +1087,10 @@ def _init(self, filename, warn, warn_to_stderr, encoding): self.top_node.next = None except UnicodeDecodeError as e: _decoding_error(e, self.filename) - - # Close the top-level Kconfig file. __self__ fetches the 'file' object - # for the method. - self._readline.__self__.close() + finally: + # Close the top-level Kconfig file. __self__ fetches the 'file' object + # for the method. + self._readline.__self__.close() self._parsing_kconfigs = False @@ -2984,8 +2984,10 @@ def _parse_block(self, end_token, parent, prev): for filename in filenames: self._enter_file(filename) - prev = self._parse_block(None, parent, prev) - self._leave_file() + try: + prev = self._parse_block(None, parent, prev) + finally: + self._leave_file() elif t0 is end_token: # Reached the end of the block. Terminate the final node and