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.