Index: Lib/test/test_mmap.py =================================================================== --- Lib/test/test_mmap.py (revision 41738) +++ Lib/test/test_mmap.py (working copy) @@ -356,6 +356,22 @@ finally: os.unlink(TESTFN) + # make move works everywhere (64-bit format problem earlier) + f = open(TESTFN, 'w+') + + try: # unlink TESTFN no matter what + f.write("ABCDEabcde") # Arbitrary character + f.flush() + + mf = mmap.mmap(f.fileno(), 10) + mf.move(5, 0, 5) + verify(mf[:] == "ABCDEABCDE", "Map move should have duplicated front 5") + mf.close() + f.close() + + finally: + os.unlink(TESTFN) + print ' Test passed' test_both() Index: Modules/socketmodule.c =================================================================== --- Modules/socketmodule.c (revision 41738) +++ Modules/socketmodule.c (working copy) @@ -1154,14 +1154,16 @@ { struct sockaddr_l2 *addr = (struct sockaddr_l2 *) _BT_SOCKADDR_MEMB(s, l2); char *straddr; + int parse_psm; _BT_L2_MEMB(addr, family) = AF_BLUETOOTH; if (!PyArg_ParseTuple(args, "si", &straddr, - &_BT_L2_MEMB(addr, psm))) { + &parse_psm)) { PyErr_SetString(socket_error, "getsockaddrarg: " "wrong format"); return 0; } + _BT_L2_MEMB(addr, psm) = parse_psm; if (setbdaddr(straddr, &_BT_L2_MEMB(addr, bdaddr)) < 0) return 0; @@ -1173,14 +1175,16 @@ { struct sockaddr_rc *addr = (struct sockaddr_rc *) _BT_SOCKADDR_MEMB(s, rc); char *straddr; + int parse_channel; _BT_RC_MEMB(addr, family) = AF_BLUETOOTH; if (!PyArg_ParseTuple(args, "si", &straddr, - &_BT_RC_MEMB(addr, channel))) { + &parse_channel)) { PyErr_SetString(socket_error, "getsockaddrarg: " "wrong format"); return 0; } + _BT_RC_MEMB(addr, channel) = parse_channel; if (setbdaddr(straddr, &_BT_RC_MEMB(addr, bdaddr)) < 0) return 0; @@ -1226,7 +1230,7 @@ int hatype = 0; int pkttype = 0; char *haddr = NULL; - unsigned int halen = 0; + int halen = 0; if (!PyArg_ParseTuple(args, "si|iis#", &interfaceName, &protoNumber, &pkttype, &hatype, @@ -1580,6 +1584,7 @@ int res; PyObject *buf; socklen_t buflen = 0; + int parse_buflen = buflen; #ifdef __BEOS__ /* We have incomplete socket support. */ @@ -1588,8 +1593,9 @@ #else if (!PyArg_ParseTuple(args, "ii|i:getsockopt", - &level, &optname, &buflen)) + &level, &optname, &parse_buflen)) return NULL; + buflen = parse_buflen; if (buflen == 0) { int flag = 0; @@ -3067,10 +3073,11 @@ { PySocketSockObject *s; SOCKET_T fd; - int family, type, proto = 0; + int family, type, proto = 0, parse_fd; if (!PyArg_ParseTuple(args, "iii|i:fromfd", - &fd, &family, &type, &proto)) + &parse_fd, &family, &type, &proto)) return NULL; + fd = parse_fd; /* Dup the fd so it and the socket can be closed independently */ fd = dup(fd); if (fd < 0) Index: Modules/mmapmodule.c =================================================================== --- Modules/mmapmodule.c (revision 41738) +++ Modules/mmapmodule.c (working copy) @@ -374,7 +374,7 @@ { unsigned long new_size; CHECK_VALID(NULL); - if (!PyArg_ParseTuple (args, "l:resize", &new_size) || + if (!PyArg_ParseTuple (args, "k:resize", &new_size) || !is_resizeable(self)) { return NULL; #ifdef MS_WINDOWS @@ -463,10 +463,10 @@ static PyObject * mmap_flush_method(mmap_object *self, PyObject *args) { - size_t offset = 0; - size_t size = self->size; + unsigned long offset = 0; + unsigned long size = self->size; CHECK_VALID(NULL); - if (!PyArg_ParseTuple (args, "|ll:flush", &offset, &size)) { + if (!PyArg_ParseTuple (args, "|kk:flush", &offset, &size)) { return NULL; } else if ((offset + size) > self->size) { PyErr_SetString (PyExc_ValueError, @@ -539,7 +539,7 @@ { unsigned long dest, src, count; CHECK_VALID(NULL); - if (!PyArg_ParseTuple (args, "iii:move", &dest, &src, &count) || + if (!PyArg_ParseTuple (args, "kkk:move", &dest, &src, &count) || !is_writeable(self)) { return NULL; } else { @@ -864,14 +864,16 @@ int map_size; int fd, flags = MAP_SHARED, prot = PROT_WRITE | PROT_READ; access_mode access = ACCESS_DEFAULT; + int parse_access = access; static const char *keywords[] = {"fileno", "length", "flags", "prot", "access", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwdict, "iO|iii", keywords, &fd, &map_size_obj, &flags, &prot, - &access)) + &parse_access)) return NULL; + access = parse_access; map_size = _GetMapSize(map_size_obj); if (map_size < 0) return NULL; @@ -952,6 +954,7 @@ int fileno; HANDLE fh = 0; access_mode access = ACCESS_DEFAULT; + int parse_access = access; DWORD flProtect, dwDesiredAccess; static const char *keywords[] = { "fileno", "length", "tagname", @@ -959,9 +962,10 @@ if (!PyArg_ParseTupleAndKeywords(args, kwdict, "iO|zi", keywords, &fileno, &map_size_obj, - &tagname, &access)) { + &tagname, &parse_access)) { return NULL; } + access = parse_access; switch(access) { case ACCESS_READ: Index: Modules/xxmodule.c =================================================================== --- Modules/xxmodule.c (revision 41738) +++ Modules/xxmodule.c (working copy) @@ -203,7 +203,7 @@ xx_roj(PyObject *self, PyObject *args) { PyObject *a; - long b; + int b; if (!PyArg_ParseTuple(args, "O#:roj", &a, &b)) return NULL; Py_INCREF(Py_None); Index: Modules/_bsddb.c =================================================================== --- Modules/_bsddb.c (revision 41738) +++ Modules/_bsddb.c (working copy) @@ -225,7 +225,7 @@ typedef struct { PyObject_HEAD DB_ENV* db_env; - u_int32_t flags; /* saved flags from open() */ + int flags; /* saved flags from open() */ int closed; struct behaviourFlags moduleFlags; #ifdef HAVE_WEAKREF @@ -238,8 +238,8 @@ PyObject_HEAD DB* db; DBEnvObject* myenvobj; /* PyObject containing the DB_ENV */ - u_int32_t flags; /* saved flags from open() */ - u_int32_t setflags; /* saved flags from set_flags() */ + int flags; /* saved flags from open() */ + int setflags; /* saved flags from set_flags() */ int haveStat; struct behaviourFlags moduleFlags; #if (DBVER >= 33) @@ -2581,7 +2581,7 @@ DB_set_encrypt(DBObject* self, PyObject* args, PyObject* kwargs) { int err; - u_int32_t flags=0; + int flags=0; char *passwd = NULL; static const char* kwnames[] = { "passwd", "flags", NULL }; @@ -3749,7 +3749,7 @@ DBEnv_dbremove(DBEnvObject* self, PyObject* args, PyObject* kwargs) { int err; - u_int32_t flags=0; + int flags=0; char *file = NULL; char *database = NULL; PyObject *txnobj = NULL; @@ -3776,7 +3776,7 @@ DBEnv_dbrename(DBEnvObject* self, PyObject* args, PyObject* kwargs) { int err; - u_int32_t flags=0; + int flags=0; char *file = NULL; char *database = NULL; char *newname = NULL; @@ -3805,7 +3805,7 @@ DBEnv_set_encrypt(DBEnvObject* self, PyObject* args, PyObject* kwargs) { int err; - u_int32_t flags=0; + int flags=0; char *passwd = NULL; static const char* kwnames[] = { "passwd", "flags", NULL }; @@ -3828,8 +3828,8 @@ DBEnv_set_timeout(DBEnvObject* self, PyObject* args, PyObject* kwargs) { int err; - u_int32_t flags=0; - u_int32_t timeout = 0; + int flags=0; + int timeout = 0; static const char* kwnames[] = { "timeout", "flags", NULL }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ii:set_timeout", kwnames, @@ -4214,7 +4214,7 @@ DBEnv_lock_id(DBEnvObject* self, PyObject* args) { int err; - u_int32_t theID; + int theID; if (!PyArg_ParseTuple(args, ":lock_id")) return NULL; @@ -4261,7 +4261,7 @@ int err; DB_LOCK_STAT* sp; PyObject* d = NULL; - u_int32_t flags = 0; + int flags = 0; if (!PyArg_ParseTuple(args, "|i:lock_stat", &flags)) return NULL; @@ -4376,7 +4376,7 @@ int err; DB_TXN_STAT* sp; PyObject* d = NULL; - u_int32_t flags=0; + int flags=0; if (!PyArg_ParseTuple(args, "|i:txn_stat", &flags)) return NULL; Index: Modules/gdbmmodule.c =================================================================== --- Modules/gdbmmodule.c (revision 41738) +++ Modules/gdbmmodule.c (working copy) @@ -253,9 +253,11 @@ dbm_has_key(register dbmobject *dp, PyObject *args) { datum key; + int parse_key_dsize - if (!PyArg_ParseTuple(args, "s#:has_key", &key.dptr, &key.dsize)) + if (!PyArg_ParseTuple(args, "s#:has_key", &key.dptr, &parse_key_dsize)) return NULL; + key.dsize = parse_key_dsize; check_dbmobject_open(dp); return PyInt_FromLong((long) gdbm_exists(dp->di_dbm, key)); } @@ -304,9 +306,11 @@ { register PyObject *v; datum key, nextkey; + int parse_key_dsize; - if (!PyArg_ParseTuple(args, "s#:nextkey", &key.dptr, &key.dsize)) + if (!PyArg_ParseTuple(args, "s#:nextkey", &key.dptr, &parse_key_dsize)) return NULL; + key.dsize = parse_key_dsize; check_dbmobject_open(dp); nextkey = gdbm_nextkey(dp->di_dbm, key); if (nextkey.dptr) { Index: Modules/bsddbmodule.c =================================================================== --- Modules/bsddbmodule.c (revision 41738) +++ Modules/bsddbmodule.c (working copy) @@ -468,12 +468,14 @@ char *data; int size; recno_t recno; + int parse_recno; if (dp->di_type == DB_RECNO) { if (!PyArg_ParseTuple(args, "i;key type must be integer", - &recno)) { + &parse_recno)) { return NULL; } + recno = parse_recno; krec.data = &recno; krec.size = sizeof(recno); } @@ -507,12 +509,14 @@ int size; PyObject *result; recno_t recno; + int parse_recno; if (dp->di_type == DB_RECNO) { if (!PyArg_ParseTuple(key, "i;key type must be integer", - &recno)) { + &parse_recno)) { return NULL; } + recno = parse_recno; krec.data = &recno; krec.size = sizeof(recno); } @@ -738,7 +742,7 @@ unsigned int psize = 0; int lorder = 0; - if (!PyArg_ParseTuple(args, "z|siiiiiii:btopen", + if (!PyArg_ParseTuple(args, "z|siiiiiIi:btopen", &file, &flag, &mode, &btflags, &cachesize, &maxkeypage, &minkeypage, &psize, &lorder)) @@ -790,12 +794,14 @@ size_t reclen = 0; char *bval = ""; char *bfname = NULL; + unsigned long parse_reclen = reclen; - if (!PyArg_ParseTuple(args, "z|siiiiiiss:rnopen", + if (!PyArg_ParseTuple(args, "z|siiiIikss:rnopen", &file, &flag, &mode, &rnflags, &cachesize, &psize, &lorder, - &reclen, &bval, &bfname)) + &parse_reclen, &bval, &bfname)) return NULL; + reclen = parse_reclen; if (flag != NULL) { /* XXX need to pass O_EXCL, O_EXLOCK, O_NONBLOCK, O_SHLOCK */ Index: Modules/cdmodule.c =================================================================== --- Modules/cdmodule.c (revision 41738) +++ Modules/cdmodule.c (working copy) @@ -297,7 +297,7 @@ { unsigned long PyTryBlock; - if (!PyArg_ParseTuple(args, "l:seekblock", &PyTryBlock)) + if (!PyArg_ParseTuple(args, "k:seekblock", &PyTryBlock)) return NULL; PyTryBlock = CDseekblock(self->ob_cdplayer, PyTryBlock); Index: Modules/_cursesmodule.c =================================================================== --- Modules/_cursesmodule.c (revision 41738) +++ Modules/_cursesmodule.c (working copy) @@ -369,6 +369,7 @@ PyObject *temp; chtype ch = 0; attr_t attr = A_NORMAL; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 1: @@ -376,7 +377,7 @@ return NULL; break; case 2: - if (!PyArg_ParseTuple(args, "Ol;ch or int,attr", &temp, &attr)) + if (!PyArg_ParseTuple(args, "Ol;ch or int,attr", &temp, &parse_attr)) return NULL; break; case 3: @@ -386,7 +387,7 @@ break; case 4: if (!PyArg_ParseTuple(args,"iiOl;y,x,ch or int, attr", - &y, &x, &temp, &attr)) + &y, &x, &temp, &parse_attr)) return NULL; use_xy = TRUE; break; @@ -394,6 +395,7 @@ PyErr_SetString(PyExc_TypeError, "addch requires 1 to 4 arguments"); return NULL; } + attr = parse_attr; if (!PyCurses_ConvertToChtype(temp, &ch)) { PyErr_SetString(PyExc_TypeError, "argument 1 or 3 must be a ch or an int"); @@ -416,6 +418,7 @@ char *str; attr_t attr = A_NORMAL , attr_old = A_NORMAL; int use_xy = FALSE, use_attr = FALSE; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 1: @@ -423,7 +426,7 @@ return NULL; break; case 2: - if (!PyArg_ParseTuple(args,"sl;str,attr", &str, &attr)) + if (!PyArg_ParseTuple(args,"sl;str,attr", &str, &parse_attr)) return NULL; use_attr = TRUE; break; @@ -433,7 +436,8 @@ use_xy = TRUE; break; case 4: - if (!PyArg_ParseTuple(args,"iisl;int,int,str,attr", &y, &x, &str, &attr)) + if (!PyArg_ParseTuple(args,"iisl;int,int,str,attr", &y, &x, &str, + &parse_attr)) return NULL; use_xy = use_attr = TRUE; break; @@ -441,6 +445,7 @@ PyErr_SetString(PyExc_TypeError, "addstr requires 1 to 4 arguments"); return NULL; } + attr = parse_attr; if (use_attr == TRUE) { attr_old = getattrs(self->win); @@ -462,6 +467,7 @@ char *str; attr_t attr = A_NORMAL , attr_old = A_NORMAL; int use_xy = FALSE, use_attr = FALSE; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 2: @@ -469,7 +475,7 @@ return NULL; break; case 3: - if (!PyArg_ParseTuple(args,"sil;str,n,attr", &str, &n, &attr)) + if (!PyArg_ParseTuple(args,"sil;str,n,attr", &str, &n, &parse_attr)) return NULL; use_attr = TRUE; break; @@ -479,7 +485,8 @@ use_xy = TRUE; break; case 5: - if (!PyArg_ParseTuple(args,"iisil;y,x,str,n,attr", &y, &x, &str, &n, &attr)) + if (!PyArg_ParseTuple(args,"iisil;y,x,str,n,attr", &y, &x, &str, &n, + &parse_attr)) return NULL; use_xy = use_attr = TRUE; break; @@ -487,6 +494,7 @@ PyErr_SetString(PyExc_TypeError, "addnstr requires 2 to 5 arguments"); return NULL; } + attr = parse_attr; if (use_attr == TRUE) { attr_old = getattrs(self->win); @@ -507,6 +515,7 @@ PyObject *temp; chtype bkgd; attr_t attr = A_NORMAL; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 1: @@ -514,13 +523,14 @@ return NULL; break; case 2: - if (!PyArg_ParseTuple(args,"Ol;ch or int,attr", &temp, &attr)) + if (!PyArg_ParseTuple(args,"Ol;ch or int,attr", &temp, &parse_attr)) return NULL; break; default: PyErr_SetString(PyExc_TypeError, "bkgd requires 1 or 2 arguments"); return NULL; } + attr = parse_attr; if (!PyCurses_ConvertToChtype(temp, &bkgd)) { PyErr_SetString(PyExc_TypeError, "argument 1 or 3 must be a ch or an int"); @@ -536,6 +546,7 @@ PyObject *temp; chtype bkgd; attr_t attr = A_NORMAL; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 1: @@ -543,13 +554,14 @@ return NULL; break; case 2: - if (!PyArg_ParseTuple(args,"Ol;ch or int,attr", &temp, &attr)) + if (!PyArg_ParseTuple(args,"Ol;ch or int,attr", &temp, &parse_attr)) return NULL; break; default: PyErr_SetString(PyExc_TypeError, "bkgdset requires 1 or 2 arguments"); return NULL; } + attr = parse_attr; if (!PyCurses_ConvertToChtype(temp, &bkgd)) { PyErr_SetString(PyExc_TypeError, "argument 1 must be a ch or an int"); @@ -597,12 +609,15 @@ PyCursesWindow_Box(PyCursesWindowObject *self, PyObject *args) { chtype ch1=0,ch2=0; + unsigned long parse_ch1=ch1, parse_ch2=ch2 switch(PyTuple_Size(args)){ case 0: break; default: - if (!PyArg_ParseTuple(args,"ll;vertint,horint", &ch1, &ch2)) + if (!PyArg_ParseTuple(args,"kk;vertint,horint", &parse_ch1, &parse_ch2)) return NULL; } + ch1 = parse_ch1; + ch2 = parse_ch2; box(self->win,ch1,ch2); Py_INCREF(Py_None); return Py_None; @@ -682,6 +697,7 @@ PyObject *temp; chtype ch; attr_t attr = A_NORMAL; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 1: @@ -689,7 +705,7 @@ return NULL; break; case 2: - if (!PyArg_ParseTuple(args,"Ol;ch or int,attr", &temp, &attr)) + if (!PyArg_ParseTuple(args,"Ol;ch or int,attr", &temp, &parse_attr)) return NULL; break; default: @@ -698,6 +714,7 @@ return NULL; } + attr = parse_attr; if (!PyCurses_ConvertToChtype(temp, &ch)) { PyErr_SetString(PyExc_TypeError, "argument 1 must be a ch or an int"); @@ -853,6 +870,7 @@ chtype ch; int n, x, y, code = OK; attr_t attr = A_NORMAL; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 2: @@ -860,7 +878,7 @@ return NULL; break; case 3: - if (!PyArg_ParseTuple(args, "Oil;ch or int,n,attr", &temp, &n, &attr)) + if (!PyArg_ParseTuple(args, "Oil;ch or int,n,attr", &temp, &n, &parse_attr)) return NULL; break; case 4: @@ -870,7 +888,7 @@ break; case 5: if (!PyArg_ParseTuple(args, "iiOil; y,x,ch or int,n,attr", - &y, &x, &temp, &n, &attr)) + &y, &x, &temp, &n, &parse_attr)) return NULL; code = wmove(self->win, y, x); break; @@ -878,6 +896,7 @@ PyErr_SetString(PyExc_TypeError, "hline requires 2 to 5 arguments"); return NULL; } + attr = parse_attr; if (code != ERR) { if (!PyCurses_ConvertToChtype(temp, &ch)) { @@ -897,6 +916,7 @@ PyObject *temp; chtype ch = 0; attr_t attr = A_NORMAL; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 1: @@ -904,7 +924,7 @@ return NULL; break; case 2: - if (!PyArg_ParseTuple(args, "Ol;ch or int,attr", &temp, &attr)) + if (!PyArg_ParseTuple(args, "Ol;ch or int,attr", &temp, &parse_attr)) return NULL; break; case 3: @@ -913,7 +933,7 @@ use_xy = TRUE; break; case 4: - if (!PyArg_ParseTuple(args,"iiOl;y,x,ch or int, attr", &y, &x, &temp, &attr)) + if (!PyArg_ParseTuple(args,"iiOl;y,x,ch or int, attr", &y, &x, &temp, &parse_attr)) return NULL; use_xy = TRUE; break; @@ -921,6 +941,7 @@ PyErr_SetString(PyExc_TypeError, "insch requires 1 or 4 arguments"); return NULL; } + attr = parse_attr; if (!PyCurses_ConvertToChtype(temp, &ch)) { PyErr_SetString(PyExc_TypeError, @@ -1000,6 +1021,7 @@ char *str; attr_t attr = A_NORMAL , attr_old = A_NORMAL; int use_xy = FALSE, use_attr = FALSE; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 1: @@ -1007,7 +1029,7 @@ return NULL; break; case 2: - if (!PyArg_ParseTuple(args,"sl;str,attr", &str, &attr)) + if (!PyArg_ParseTuple(args,"sl;str,attr", &str, &parse_attr)) return NULL; use_attr = TRUE; break; @@ -1017,7 +1039,7 @@ use_xy = TRUE; break; case 4: - if (!PyArg_ParseTuple(args,"iisl;y,x,str,attr", &y, &x, &str, &attr)) + if (!PyArg_ParseTuple(args,"iisl;y,x,str,attr", &y, &x, &str, &parse_attr)) return NULL; use_xy = use_attr = TRUE; break; @@ -1025,6 +1047,7 @@ PyErr_SetString(PyExc_TypeError, "insstr requires 1 to 4 arguments"); return NULL; } + attr = parse_attr; if (use_attr == TRUE) { attr_old = getattrs(self->win); @@ -1046,6 +1069,7 @@ char *str; attr_t attr = A_NORMAL , attr_old = A_NORMAL; int use_xy = FALSE, use_attr = FALSE; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 2: @@ -1053,7 +1077,7 @@ return NULL; break; case 3: - if (!PyArg_ParseTuple(args,"sil;str,n,attr", &str, &n, &attr)) + if (!PyArg_ParseTuple(args,"sil;str,n,attr", &str, &n, &parse_attr)) return NULL; use_attr = TRUE; break; @@ -1063,7 +1087,8 @@ use_xy = TRUE; break; case 5: - if (!PyArg_ParseTuple(args,"iisil;y,x,str,n,attr", &y, &x, &str, &n, &attr)) + if (!PyArg_ParseTuple(args,"iisil;y,x,str,n,attr", &y, &x, &str, &n, + &parse_attr)) return NULL; use_xy = use_attr = TRUE; break; @@ -1071,6 +1096,7 @@ PyErr_SetString(PyExc_TypeError, "insnstr requires 2 to 5 arguments"); return NULL; } + attr = parse_attr; if (use_attr == TRUE) { attr_old = getattrs(self->win); @@ -1380,6 +1406,7 @@ chtype ch; int n, x, y, code = OK; attr_t attr = A_NORMAL; + long parse_attr = attr; switch (PyTuple_Size(args)) { case 2: @@ -1387,7 +1414,7 @@ return NULL; break; case 3: - if (!PyArg_ParseTuple(args, "Oil;ch or int,n,attr", &temp, &n, &attr)) + if (!PyArg_ParseTuple(args, "Oil;ch or int,n,attr", &temp, &n, &parse_attr)) return NULL; break; case 4: @@ -1397,7 +1424,7 @@ break; case 5: if (!PyArg_ParseTuple(args, "iiOil; y,x,ch or int,n,attr", - &y, &x, &temp, &n, &attr)) + &y, &x, &temp, &n, &parse_attr)) return NULL; code = wmove(self->win, y, x); break; @@ -1405,6 +1432,7 @@ PyErr_SetString(PyExc_TypeError, "vline requires 2 to 5 arguments"); return NULL; } + attr = parse_attr; if (code != ERR) { if (!PyCurses_ConvertToChtype(temp, &ch)) { @@ -1672,13 +1700,15 @@ PyCurses_UngetMouse(PyObject *self, PyObject *args) { MEVENT event; + long parse_event_bstate; /* note: MEVENT.bstate is a mmask_t = ulong */ PyCursesInitialised if (!PyArg_ParseTuple(args, "(hiiil)", &event.id, &event.x, &event.y, &event.z, - (int *) &event.bstate)) + &parse_event_bstate)) return NULL; + event.bstate = parse_event_bstate; return PyCursesCheckERR(ungetmouse(&event), "ungetmouse"); } @@ -1713,7 +1743,7 @@ PyCursesInitialised - if (!PyArg_ParseTuple(args, "b:halfdelay", &tenths)) return NULL; + if (!PyArg_ParseTuple(args, "B:halfdelay", &tenths)) return NULL; return PyCursesCheckERR(halfdelay(tenths), "halfdelay"); } Index: Modules/fcntlmodule.c =================================================================== --- Modules/fcntlmodule.c (revision 41738) +++ Modules/fcntlmodule.c (working copy) @@ -95,7 +95,7 @@ { int fd; int code; - int arg; + int argintbuf; int ret; char *str; int len; @@ -170,18 +170,18 @@ } PyErr_Clear(); - arg = 0; + argintbuf = 0; if (!PyArg_ParseTuple(args, "O&I|i;ioctl requires a file or file descriptor," " an integer and optionally an integer or buffer argument", - conv_descriptor, &fd, &code, &arg)) { + conv_descriptor, &fd, &code, &argintbuf)) { return NULL; } Py_BEGIN_ALLOW_THREADS #ifdef __VMS - ret = ioctl(fd, code, (void *)arg); + ret = ioctl(fd, code, (void *)argintbuf); #else - ret = ioctl(fd, code, arg); + ret = ioctl(fd, code, argintbuf); #endif Py_END_ALLOW_THREADS if (ret < 0) { Index: Modules/puremodule.c =================================================================== --- Modules/puremodule.c (revision 41738) +++ Modules/puremodule.c (working copy) @@ -563,7 +563,7 @@ char* type; int status; - if (!PyArg_ParseTuple(args, "lis:purify_watch_n", &addrrep, &size, &type)) + if (!PyArg_ParseTuple(args, "lIs:purify_watch_n", &addrrep, &size, &type)) return NULL; status = purify_watch_n((char*)addrrep, size, type); @@ -614,7 +614,7 @@ unsigned int size; int status; - if (!PyArg_ParseTuple(args, "li:purify_what_colors", &addrrep, &size)) + if (!PyArg_ParseTuple(args, "lI:purify_what_colors", &addrrep, &size)) return NULL; status = purify_what_colors((char*)addrrep, size); Index: Modules/_hashopenssl.c =================================================================== --- Modules/_hashopenssl.c (revision 41738) +++ Modules/_hashopenssl.c (working copy) @@ -234,7 +234,7 @@ PyObject *name_obj = NULL; char *nameStr; unsigned char *cp = NULL; - unsigned int len; + int len; const EVP_MD *digest; if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|s#:HASH", kwlist, @@ -371,7 +371,7 @@ char *name; const EVP_MD *digest; unsigned char *cp = NULL; - unsigned int len; + int len; if (!PyArg_ParseTupleAndKeywords(args, kwdict, "O|s#:new", kwlist, &name_obj, &cp, &len)) {