Commit 2070be82 authored by R. David Murray's avatar R. David Murray

Merged revisions 78137 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78137 | r.david.murray | 2010-02-10 17:42:04 -0500 (Wed, 10 Feb 2010) | 8 lines

  Issue 7835:  Shelve's __del__ method calls its close method, and its
  close method refers to an identifier in the global module namespace.
  This means that when __del__ is called during interpreter shutdown (if,
  for example, the calling program still has a pointer to the shelf),
  sometimes that global identifier would wind up being None, causing
  mysterious 'ignored' exceptions.  This patch checks for the possible None
  value first before using the global, thus avoiding the error messages.
........
parent 8ed66ed7
...@@ -145,6 +145,10 @@ class Shelf(UserDict.DictMixin): ...@@ -145,6 +145,10 @@ class Shelf(UserDict.DictMixin):
self.dict.close() self.dict.close()
except AttributeError: except AttributeError:
pass pass
# _ClosedDict can be None when close is called from __del__ during shutdown
if _ClosedDict is None:
self.dict = None
else:
self.dict = _ClosedDict() self.dict = _ClosedDict()
def __del__(self): def __del__(self):
......
...@@ -66,6 +66,9 @@ Core and Builtins ...@@ -66,6 +66,9 @@ Core and Builtins
Library Library
------- -------
- Issue #7835: shelve should no longer produce mysterious warnings during
interpreter shutdown.
- Issue #4772: Raise a ValueError when an unknown Bluetooth protocol is - Issue #4772: Raise a ValueError when an unknown Bluetooth protocol is
specified, rather than fall through to AF_PACKET (in the `socket` module). specified, rather than fall through to AF_PACKET (in the `socket` module).
Also, raise ValueError rather than TypeError when an unknown TIPC address Also, raise ValueError rather than TypeError when an unknown TIPC address
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment