From: Martin v. Löwis Date: Tue, 15 Jul 2003 19:12:54 +0000 (+0000) Subject: heck environment closed status before closing a cursors. Fixes #763928. X-Git-Tag: v2.3c1~75 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=35c38eaeae8d24fe0098f3942135b3ba28cffe85;p=thirdparty%2FPython%2Fcpython.git heck environment closed status before closing a cursors. Fixes #763928. --- diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c index 227fe7bdf586..990c89f215bd 100644 --- a/Modules/_bsddb.c +++ b/Modules/_bsddb.c @@ -774,7 +774,14 @@ DBCursor_dealloc(DBCursorObject* self) int err; if (self->dbc != NULL) { 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); self->dbc = NULL; MYDB_END_ALLOW_THREADS;