summaryrefslogtreecommitdiffstats
path: root/Modules/_bsddb.c
diff options
context:
space:
mode:
authorGregory P. Smith <greg@mad-scientist.com>2006-01-24 19:55:02 (GMT)
committerGregory P. Smith <greg@mad-scientist.com>2006-01-24 19:55:02 (GMT)
commit4e414d83860ecb46e0927fa1b53bc4fe2a6ae544 (patch)
treec72576f80f6259c9fe2409afc340243c7e9df3c2 /Modules/_bsddb.c
parentec2f74f4b13642b1848696fbb96d29c5b9da54b1 (diff)
downloadcpython-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.c14
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);