Commit 30f13ec1 authored by Gregory P. Smith's avatar Gregory P. Smith

Merge this fix from the pybsddb tree:

r293 | jcea | 2008-01-31 01:08:19 -0800 (Thu, 31 Jan 2008) | 4 lines

Solved memory leak when using cursors with
databases without environment.
parent 2a381d1f
......@@ -1270,6 +1270,9 @@ Extension Modules
- Bug #1372: zlibmodule.c: int overflow in PyZlib_decompress
- bsddb module: Fix memory leak when using database cursors on
databases without a DBEnv.
Tests
-----
......
......@@ -824,7 +824,6 @@ DBCursor_dealloc(DBCursorObject* self)
}
if (self->dbc != NULL) {
MYDB_BEGIN_ALLOW_THREADS;
/* If the underlying database has been closed, we don't
need to do anything. If the environment has been closed
we need to leak, as BerkeleyDB will crash trying to access
......@@ -833,9 +832,14 @@ DBCursor_dealloc(DBCursorObject* self)
a database open. */
if (self->mydb->db && self->mydb->myenvobj &&
!self->mydb->myenvobj->closed)
/* test for: open db + no environment or non-closed environment */
if (self->mydb->db && (!self->mydb->myenvobj || (self->mydb->myenvobj &&
!self->mydb->myenvobj->closed))) {
MYDB_BEGIN_ALLOW_THREADS;
err = self->dbc->c_close(self->dbc);
MYDB_END_ALLOW_THREADS;
}
self->dbc = NULL;
MYDB_END_ALLOW_THREADS;
}
Py_XDECREF( self->mydb );
PyObject_Del(self);
......
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