[Python-checkins] python/dist/src/Modules dbmmodule.c,2.28,2.28.6.1
nnorwitz@users.sourceforge.net
nnorwitz@users.sourceforge.net
Fri, 22 Nov 2002 15:29:49 -0800
Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv8539/Modules
Modified Files:
Tag: release22-maint
dbmmodule.c
Log Message:
Fix SF # 640557, '64-bit' systems and the dbm module
datum.dsize can apparently be long on some systems.
Ensure we pass an int* to PyArg_Parse("s#"), not &datum.dsize
Index: dbmmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/dbmmodule.c,v
retrieving revision 2.28
retrieving revision 2.28.6.1
diff -C2 -d -r2.28 -r2.28.6.1
*** dbmmodule.c 8 Dec 2001 18:02:56 -0000 2.28
--- dbmmodule.c 22 Nov 2002 23:29:47 -0000 2.28.6.1
***************
*** 91,98 ****
{
datum drec, krec;
! if (!PyArg_Parse(key, "s#", &krec.dptr, &krec.dsize) )
return NULL;
check_dbmobject_open(dp);
drec = dbm_fetch(dp->di_dbm, krec);
--- 91,100 ----
{
datum drec, krec;
+ int tmp_size;
! if (!PyArg_Parse(key, "s#", &krec.dptr, &tmp_size) )
return NULL;
+ krec.dsize = tmp_size;
check_dbmobject_open(dp);
drec = dbm_fetch(dp->di_dbm, krec);
***************
*** 114,123 ****
{
datum krec, drec;
! if ( !PyArg_Parse(v, "s#", &krec.dptr, &krec.dsize) ) {
PyErr_SetString(PyExc_TypeError,
"dbm mappings have string indices only");
return -1;
}
if (dp->di_dbm == NULL) {
PyErr_SetString(DbmError, "DBM object has already been closed");
--- 116,127 ----
{
datum krec, drec;
+ int tmp_size;
! if ( !PyArg_Parse(v, "s#", &krec.dptr, &tmp_size) ) {
PyErr_SetString(PyExc_TypeError,
"dbm mappings have string indices only");
return -1;
}
+ krec.dsize = tmp_size;
if (dp->di_dbm == NULL) {
PyErr_SetString(DbmError, "DBM object has already been closed");
***************
*** 133,141 ****
}
} else {
! if ( !PyArg_Parse(w, "s#", &drec.dptr, &drec.dsize) ) {
PyErr_SetString(PyExc_TypeError,
"dbm mappings have string elements only");
return -1;
}
if ( dbm_store(dp->di_dbm, krec, drec, DBM_REPLACE) < 0 ) {
dbm_clearerr(dp->di_dbm);
--- 137,146 ----
}
} else {
! if ( !PyArg_Parse(w, "s#", &drec.dptr, &tmp_size) ) {
PyErr_SetString(PyExc_TypeError,
"dbm mappings have string elements only");
return -1;
}
+ drec.dsize = tmp_size;
if ( dbm_store(dp->di_dbm, krec, drec, DBM_REPLACE) < 0 ) {
dbm_clearerr(dp->di_dbm);
***************
*** 205,211 ****
{
datum key, val;
! if (!PyArg_ParseTuple(args, "s#:has_key", &key.dptr, &key.dsize))
return NULL;
check_dbmobject_open(dp);
val = dbm_fetch(dp->di_dbm, key);
--- 210,218 ----
{
datum key, val;
+ int tmp_size;
! if (!PyArg_ParseTuple(args, "s#:has_key", &key.dptr, &tmp_size))
return NULL;
+ key.dsize = tmp_size;
check_dbmobject_open(dp);
val = dbm_fetch(dp->di_dbm, key);
***************
*** 218,225 ****
datum key, val;
PyObject *defvalue = Py_None;
if (!PyArg_ParseTuple(args, "s#|O:get",
! &key.dptr, &key.dsize, &defvalue))
return NULL;
check_dbmobject_open(dp);
val = dbm_fetch(dp->di_dbm, key);
--- 225,234 ----
datum key, val;
PyObject *defvalue = Py_None;
+ int tmp_size;
if (!PyArg_ParseTuple(args, "s#|O:get",
! &key.dptr, &tmp_size, &defvalue))
return NULL;
+ key.dsize = tmp_size;
check_dbmobject_open(dp);
val = dbm_fetch(dp->di_dbm, key);
***************
*** 237,244 ****
datum key, val;
PyObject *defvalue = NULL;
if (!PyArg_ParseTuple(args, "s#|S:setdefault",
! &key.dptr, &key.dsize, &defvalue))
return NULL;
check_dbmobject_open(dp);
val = dbm_fetch(dp->di_dbm, key);
--- 246,255 ----
datum key, val;
PyObject *defvalue = NULL;
+ int tmp_size;
if (!PyArg_ParseTuple(args, "s#|S:setdefault",
! &key.dptr, &tmp_size, &defvalue))
return NULL;
+ key.dsize = tmp_size;
check_dbmobject_open(dp);
val = dbm_fetch(dp->di_dbm, key);