SF bug #476138:  tempfile behavior across platforms
Ensure that a tempfile can be closed any number of times without error.
This wasn't true on Windows.
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index f1d53db..96245d8 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -131,14 +131,16 @@
     def __init__(self, file, path):
         self.file = file
         self.path = path
+        self.close_called = 0
 
     def close(self):
-        self.file.close()
-        os.unlink(self.path)
+        if not self.close_called:
+            self.close_called = 1
+            self.file.close()
+            os.unlink(self.path)
 
     def __del__(self):
-        try: self.close()
-        except: pass
+        self.close()
 
     def __getattr__(self, name):
         file = self.__dict__['file']
diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py
new file mode 100644
index 0000000..286e79c
--- /dev/null
+++ b/Lib/test/test_tempfile.py
@@ -0,0 +1,10 @@
+# SF bug #476138: tempfile behavior across platforms
+# Ensure that a temp file can be closed any number of times without error.
+
+import tempfile
+
+f = tempfile.TemporaryFile("w+b")
+f.write('abc\n')
+f.close()
+f.close()
+f.close()