aboutsummaryrefslogtreecommitdiff
path: root/Lib/dbm
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-04-10 13:29:28 +0300
committerSerhiy Storchaka <storchaka@gmail.com>2015-04-10 13:29:28 +0300
commit2116b12da59f77358cc539b90f58a3cdea43c2fd (patch)
tree693d26652b1dbf8b2ac058c5725f9726c3d14a0b /Lib/dbm
parentNull merge (diff)
parentIssue #23865: close() methods in multiple modules now are idempotent and more (diff)
downloadcpython-2116b12da59f77358cc539b90f58a3cdea43c2fd.tar.gz
cpython-2116b12da59f77358cc539b90f58a3cdea43c2fd.tar.bz2
cpython-2116b12da59f77358cc539b90f58a3cdea43c2fd.zip
Issue #23865: close() methods in multiple modules now are idempotent and more
robust at shutdown. If needs to release multiple resources, they are released even if errors are occured.
Diffstat (limited to 'Lib/dbm')
-rw-r--r--Lib/dbm/dumb.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/Lib/dbm/dumb.py b/Lib/dbm/dumb.py
index 34240968e72..7777a7cae67 100644
--- a/Lib/dbm/dumb.py
+++ b/Lib/dbm/dumb.py
@@ -258,8 +258,10 @@ class _Database(collections.MutableMapping):
raise error('DBM object has already been closed') from None
def close(self):
- self._commit()
- self._index = self._datfile = self._dirfile = self._bakfile = None
+ try:
+ self._commit()
+ finally:
+ self._index = self._datfile = self._dirfile = self._bakfile = None
__del__ = close