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 9e64de9..0b4f85a 100644
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -356,7 +356,10 @@
         self._soundpos = 0
 
     def close(self):
-        self._file.close()
+        file = self._file
+        if file is not None:
+            self._file = None
+            file.close()
 
     def tell(self):
         return self._soundpos