[Python-checkins] r78140 - in python/branches/release31-maint: Lib/shelve.py Misc/NEWS

r.david.murray python-checkins at python.org
Thu Feb 11 01:25:17 CET 2010


Author: r.david.murray
Date: Thu Feb 11 01:25:17 2010
New Revision: 78140

Log:
Merged revisions 78139 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r78139 | r.david.murray | 2010-02-10 19:15:05 -0500 (Wed, 10 Feb 2010) | 15 lines
  
  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.
  ........
................


Modified:
   python/branches/release31-maint/   (props changed)
   python/branches/release31-maint/Lib/shelve.py
   python/branches/release31-maint/Misc/NEWS

Modified: python/branches/release31-maint/Lib/shelve.py
==============================================================================
--- python/branches/release31-maint/Lib/shelve.py	(original)
+++ python/branches/release31-maint/Lib/shelve.py	Thu Feb 11 01:25:17 2010
@@ -136,7 +136,11 @@
             self.dict.close()
         except AttributeError:
             pass
-        self.dict = _ClosedDict()
+        # _ClosedDict can be None when close is called from __del__ during shutdown
+        if _ClosedDict is None:
+            self.dict = None
+        else:
+            self.dict = _ClosedDict()
 
     def __del__(self):
         if not hasattr(self, 'writeback'):

Modified: python/branches/release31-maint/Misc/NEWS
==============================================================================
--- python/branches/release31-maint/Misc/NEWS	(original)
+++ python/branches/release31-maint/Misc/NEWS	Thu Feb 11 01:25:17 2010
@@ -79,6 +79,9 @@
 Library
 -------
 
+- Issue #7835: shelve should no longer produce mysterious warnings during
+  interpreter shutdown.
+
 - Issue #6233: ElementTree failed converting unicode characters to XML
   entities when they could't be represented in the requested output
   encoding.  Patch by Jerry Chen.


More information about the Python-checkins mailing list