mirror of https://github.com/python/cpython
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.
This commit is contained in:
parent
94dcf0ddbf
commit
eeed5b7c22
|
@ -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,10 +832,15 @@ 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);
|
||||
self->dbc = NULL;
|
||||
MYDB_END_ALLOW_THREADS;
|
||||
}
|
||||
self->dbc = NULL;
|
||||
}
|
||||
Py_XDECREF( self->mydb );
|
||||
PyObject_Del(self);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue