SF bug 486480:  zipfile __del__ is broken
ZipFile.__del__():  call ZipFile.close(), like its docstring says it does.
ZipFile.close():  allow calling more than once (as all file-like objects
in Python should support).
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index a06731e..4b59ac6 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -454,13 +454,13 @@
 
     def __del__(self):
         """Call the "close()" method in case the user forgot."""
-        if self.fp and not self._filePassed:
-            self.fp.close()
-            self.fp = None
+        self.close()
 
     def close(self):
         """Close the file, and for mode "w" and "a" write the ending
         records."""
+        if self.fp is None:
+            return
         if self.mode in ("w", "a"):             # write ending records
             count = 0
             pos1 = self.fp.tell()