Issue #16485: Fix file descriptor not being closed if file header patching fails on closing of aifc file.
diff --git a/Lib/aifc.py b/Lib/aifc.py
index 775f39c..841f5ae 100644
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -692,7 +692,9 @@
self._patchheader()
def close(self):
- if self._file:
+ if self._file is None:
+ return
+ try:
self._ensure_header_written(0)
if self._datawritten & 1:
# quick pad to even size
@@ -703,10 +705,12 @@
self._datalength != self._datawritten or \
self._marklength:
self._patchheader()
+ finally:
# Prevent ref cycles
self._convert = None
- self._file.close()
+ f = self._file
self._file = None
+ f.close()
#
# Internal methods.