diff options
author | Gregory P. Smith <greg@mad-scientist.com> | 2006-01-24 19:55:02 (GMT) |
---|---|---|
committer | Gregory P. Smith <greg@mad-scientist.com> | 2006-01-24 19:55:02 (GMT) |
commit | 4e414d83860ecb46e0927fa1b53bc4fe2a6ae544 (patch) | |
tree | c72576f80f6259c9fe2409afc340243c7e9df3c2 /Modules/_bsddb.c | |
parent | ec2f74f4b13642b1848696fbb96d29c5b9da54b1 (diff) | |
download | cpython-4e414d83860ecb46e0927fa1b53bc4fe2a6ae544.zip cpython-4e414d83860ecb46e0927fa1b53bc4fe2a6ae544.tar.gz cpython-4e414d83860ecb46e0927fa1b53bc4fe2a6ae544.tar.bz2 |
commits sourceforge patch #1407992 by neil.norwitz.
this fixes the bsddb db associate tests when compiled against
BerkeleyDB 3.3 thru 4.1. 4.2 thru 4.4 already passed and still
pass.
Diffstat (limited to 'Modules/_bsddb.c')
-rw-r--r-- | Modules/_bsddb.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/Modules/_bsddb.c b/Modules/_bsddb.c index 1047745..ef161a9 100644 --- a/Modules/_bsddb.c +++ b/Modules/_bsddb.c @@ -97,7 +97,7 @@ #error "eek! DBVER can't handle minor versions > 9" #endif -#define PY_BSDDB_VERSION "4.4.0" +#define PY_BSDDB_VERSION "4.4.1" static char *rcs_id = "$Id$"; @@ -912,7 +912,7 @@ DBEnv_dealloc(DBEnvObject* self) } #endif - if (self->db_env) { + if (self->db_env && !self->closed) { MYDB_BEGIN_ALLOW_THREADS; self->db_env->close(self->db_env, 0); MYDB_END_ALLOW_THREADS; @@ -1534,11 +1534,11 @@ DB_pget(DBObject* self, PyObject* args, PyObject* kwargs) keyObj = PyInt_FromLong(*(int *)key.data); else keyObj = PyString_FromStringAndSize(key.data, key.size); - retval = Py_BuildValue("OOO", keyObj, pkeyObj, dataObj); + retval = PyTuple_Pack(3, keyObj, pkeyObj, dataObj); } else /* return just the pkey and data */ { - retval = Py_BuildValue("OO", pkeyObj, dataObj); + retval = PyTuple_Pack(2, pkeyObj, dataObj); } FREE_DBT(pkey); FREE_DBT(data); @@ -3176,7 +3176,7 @@ DBC_pget(DBCursorObject* self, PyObject* args, PyObject *kwargs) else pkeyObj = PyString_FromStringAndSize(pkey.data, pkey.size); - if (flags & DB_SET_RECNO) /* return key, pkey and data */ + if (key.data && key.size) /* return key, pkey and data */ { PyObject *keyObj; int type = _DB_get_type(self->mydb); @@ -3184,12 +3184,12 @@ DBC_pget(DBCursorObject* self, PyObject* args, PyObject *kwargs) keyObj = PyInt_FromLong(*(int *)key.data); else keyObj = PyString_FromStringAndSize(key.data, key.size); - retval = Py_BuildValue("OOO", keyObj, pkeyObj, dataObj); + retval = PyTuple_Pack(3, keyObj, pkeyObj, dataObj); FREE_DBT(key); } else /* return just the pkey and data */ { - retval = Py_BuildValue("OO", pkeyObj, dataObj); + retval = PyTuple_Pack(2, pkeyObj, dataObj); } FREE_DBT(pkey); FREE_DBT(data); |