heck environment closed status before closing a cursors. Fixes #763928.

This commit is contained in:
Martin v. Löwis 2003-07-15 19:12:54 +00:00
parent f393fc6e51
commit 35c38eaeae
1 changed files with 8 additions and 1 deletions

View File

@ -774,7 +774,14 @@ DBCursor_dealloc(DBCursorObject* self)
int err; int err;
if (self->dbc != NULL) { if (self->dbc != NULL) {
MYDB_BEGIN_ALLOW_THREADS; MYDB_BEGIN_ALLOW_THREADS;
if (self->mydb->db != NULL) /* 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
the environment. There was an exception when the
user closed the environment even though there still was
a database open. */
if (self->mydb->db && self->mydb->myenvobj &&
!self->mydb->myenvobj->closed)
err = self->dbc->c_close(self->dbc); err = self->dbc->c_close(self->dbc);
self->dbc = NULL; self->dbc = NULL;
MYDB_END_ALLOW_THREADS; MYDB_END_ALLOW_THREADS;