Issue #23865: close() methods in multiple modules now are idempotent and more
robust at shutdown. If needs to release multiple resources, they are released
even if errors are occured.
diff --git a/Lib/aifc.py b/Lib/aifc.py
index 9ac710f..c9a021e 100644
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -357,10 +357,13 @@
self._soundpos = 0
def close(self):
- if self._decomp:
- self._decomp.CloseDecompressor()
- self._decomp = None
- self._file.close()
+ decomp = self._decomp
+ try:
+ if decomp:
+ self._decomp = None
+ decomp.CloseDecompressor()
+ finally:
+ self._file.close()
def tell(self):
return self._soundpos