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.
This commit is contained in:
parent
8f3c812e22
commit
19f44560f2
|
@ -27,7 +27,7 @@ class _socketobject:
|
|||
self._sock = sock
|
||||
|
||||
def close(self):
|
||||
self._sock = None
|
||||
self._sock = 0
|
||||
|
||||
def __del__(self):
|
||||
self.close()
|
||||
|
@ -68,7 +68,7 @@ class _fileobject:
|
|||
if self._sock:
|
||||
self.flush()
|
||||
finally:
|
||||
self._sock = None
|
||||
self._sock = 0
|
||||
|
||||
def __del__(self):
|
||||
self.close()
|
||||
|
|
Loading…
Reference in New Issue