Commit d6013d78 authored by Gregory P. Smith's avatar Gregory P. Smith

Fix an uncollectable reference leak in bsddb.db.DBShelf.append

parent bfaa752c
......@@ -93,6 +93,7 @@ class DBShelf(DictMixin):
"""
def __init__(self, dbenv=None):
self.db = db.DB(dbenv)
self._closed = True
if HIGHEST_PROTOCOL:
self.protocol = HIGHEST_PROTOCOL
else:
......@@ -138,6 +139,23 @@ class DBShelf(DictMixin):
return self.db.keys()
def open(self, *args, **kwargs):
self.db.open(*args, **kwargs)
self._closed = False
def close(self, *args, **kwargs):
self.db.close(*args, **kwargs)
self._closed = True
def __repr__(self):
if self._closed:
return '<DBShelf @ 0x%x - closed>' % (id(self))
else:
return repr(dict(self.iteritems()))
def items(self, txn=None):
if txn != None:
items = self.db.items(txn)
......@@ -166,8 +184,7 @@ class DBShelf(DictMixin):
def append(self, value, txn=None):
if self.get_type() == db.DB_RECNO:
self.append = self.__append
return self.append(value, txn=txn)
return self.__append(value, txn=txn)
raise DBShelveError, "append() only supported when dbshelve opened with filetype=dbshelve.db.DB_RECNO"
......
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