Use ``0'' instead of ``None'' to reset the underlying object in close
methods. Using None causes problems if the destructor is called after
the __builtin__ module has already been destroyed (unfortunately, this
can happen!). I can't just delete the object because it is actually
tested for (if self._sock: ...). Setting it to 0 is a bit weird but
works.
diff --git a/Lib/plat-win/socket.py b/Lib/plat-win/socket.py
index 7e1b372..645d01e 100755
--- a/Lib/plat-win/socket.py
+++ b/Lib/plat-win/socket.py
@@ -27,7 +27,7 @@
self._sock = sock
def close(self):
- self._sock = None
+ self._sock = 0
def __del__(self):
self.close()
@@ -68,7 +68,7 @@
if self._sock:
self.flush()
finally:
- self._sock = None
+ self._sock = 0
def __del__(self):
self.close()