Mercurial > cpython-lru_cache-weakref
diff Modules/socketmodule.c @ 64121:2a4ceebdfcfb 3.1
Merged revisions 84146-84147,84150 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r84146 | antoine.pitrou | 2010-08-17 19:55:07 +0200 (mar., 17 août 2010) | 4 lines
Issue #9612: The set object is now 64-bit clean under Windows.
........
r84147 | antoine.pitrou | 2010-08-17 20:30:06 +0200 (mar., 17 août 2010) | 3 lines
Fix <deque iterator>.__length_hint__() under 64-bit Windows.
........
r84150 | antoine.pitrou | 2010-08-17 21:33:30 +0200 (mar., 17 août 2010) | 3 lines
Clean some 64-bit issues. Also, always spell "ssize_t" "Py_ssize_t".
........
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Tue, 17 Aug 2010 19:39:39 +0000 |
| parents | f197407bdba2 |
| children | 633166d4fc12 |
line wrap: on
line diff
--- a/Modules/socketmodule.c Tue Aug 17 08:41:48 2010 +0000 +++ b/Modules/socketmodule.c Tue Aug 17 19:39:39 2010 +0000 @@ -678,9 +678,11 @@ /* See if the socket is ready */ if (writing) - n = select(s->sock_fd+1, NULL, &fds, NULL, &tv); + n = select(Py_SAFE_DOWNCAST(s->sock_fd+1, SOCKET_T, int), + NULL, &fds, NULL, &tv); else - n = select(s->sock_fd+1, &fds, NULL, NULL, &tv); + n = select(Py_SAFE_DOWNCAST(s->sock_fd+1, SOCKET_T, int), + &fds, NULL, NULL, &tv); } #endif @@ -937,7 +939,7 @@ /*ARGSUSED*/ static PyObject * -makesockaddr(int sockfd, struct sockaddr *addr, int addrlen, int proto) +makesockaddr(SOCKET_T sockfd, struct sockaddr *addr, size_t addrlen, int proto) { if (addrlen == 0) { /* No address -- may be recvfrom() from known socket */ @@ -1893,7 +1895,8 @@ FD_SET(s->sock_fd, &fds); FD_ZERO(&fds_exc); FD_SET(s->sock_fd, &fds_exc); - res = select(s->sock_fd+1, NULL, &fds, &fds_exc, &tv); + res = select(Py_SAFE_DOWNCAST(s->sock_fd+1, SOCKET_T, int), + NULL, &fds, &fds_exc, &tv); if (res == 0) { res = WSAEWOULDBLOCK; timeout = 1; @@ -2136,10 +2139,10 @@ * also possible that we return a number of bytes smaller than the request * bytes. */ -static ssize_t -sock_recv_guts(PySocketSockObject *s, char* cbuf, int len, int flags) +static Py_ssize_t +sock_recv_guts(PySocketSockObject *s, char* cbuf, Py_ssize_t len, int flags) { - ssize_t outlen = -1; + Py_ssize_t outlen = -1; int timeout; #ifdef __VMS int remaining; @@ -2221,11 +2224,11 @@ static PyObject * sock_recv(PySocketSockObject *s, PyObject *args) { - int recvlen, flags = 0; - ssize_t outlen; + Py_ssize_t recvlen, outlen; + int flags = 0; PyObject *buf; - if (!PyArg_ParseTuple(args, "i|i:recv", &recvlen, &flags)) + if (!PyArg_ParseTuple(args, "n|i:recv", &recvlen, &flags)) return NULL; if (recvlen < 0) { @@ -2272,14 +2275,13 @@ { static char *kwlist[] = {"buffer", "nbytes", "flags", 0}; - int recvlen = 0, flags = 0; - ssize_t readlen; + int flags = 0; Py_buffer pbuf; char *buf; - int buflen; + Py_ssize_t buflen, readlen, recvlen = 0; /* Get the buffer's memory */ - if (!PyArg_ParseTupleAndKeywords(args, kwds, "w*|ii:recv_into", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kwds, "w*|ni:recv_into", kwlist, &pbuf, &recvlen, &flags)) return NULL; buf = pbuf.buf; @@ -2339,13 +2341,13 @@ * 'addr' is a return value for the address object. Note that you must decref * it yourself. */ -static ssize_t -sock_recvfrom_guts(PySocketSockObject *s, char* cbuf, int len, int flags, +static Py_ssize_t +sock_recvfrom_guts(PySocketSockObject *s, char* cbuf, Py_ssize_t len, int flags, PyObject** addr) { sock_addr_t addrbuf; int timeout; - ssize_t n = -1; + Py_ssize_t n = -1; socklen_t addrlen; *addr = NULL; @@ -2401,10 +2403,10 @@ PyObject *buf = NULL; PyObject *addr = NULL; PyObject *ret = NULL; - int recvlen, flags = 0; - ssize_t outlen; - - if (!PyArg_ParseTuple(args, "i|i:recvfrom", &recvlen, &flags)) + int flags = 0; + Py_ssize_t recvlen, outlen; + + if (!PyArg_ParseTuple(args, "n|i:recvfrom", &recvlen, &flags)) return NULL; if (recvlen < 0) { @@ -2452,15 +2454,14 @@ { static char *kwlist[] = {"buffer", "nbytes", "flags", 0}; - int recvlen = 0, flags = 0; - ssize_t readlen; + int flags = 0; Py_buffer pbuf; char *buf; - int buflen; + Py_ssize_t readlen, buflen, recvlen = 0; PyObject *addr = NULL; - if (!PyArg_ParseTupleAndKeywords(args, kwds, "w*|ii:recvfrom_into", + if (!PyArg_ParseTupleAndKeywords(args, kwds, "w*|ni:recvfrom_into", kwlist, &pbuf, &recvlen, &flags)) return NULL; @@ -2490,7 +2491,7 @@ PyBuffer_Release(&pbuf); /* Return the number of bytes read and the address. Note that we do not do anything special here in the case that readlen < recvlen. */ - return Py_BuildValue("lN", readlen, addr); + return Py_BuildValue("nN", readlen, addr); } PyDoc_STRVAR(recvfrom_into_doc, @@ -2505,7 +2506,8 @@ sock_send(PySocketSockObject *s, PyObject *args) { char *buf; - int len, n = -1, flags = 0, timeout; + Py_ssize_t len, n = -1; + int flags = 0, timeout; Py_buffer pbuf; if (!PyArg_ParseTuple(args, "y*|i:send", &pbuf, &flags)) @@ -2536,7 +2538,7 @@ } if (n < 0) return s->errorhandler(); - return PyLong_FromLong((long)n); + return PyLong_FromSsize_t(n); } PyDoc_STRVAR(send_doc, @@ -2553,7 +2555,8 @@ sock_sendall(PySocketSockObject *s, PyObject *args) { char *buf; - int len, n = -1, flags = 0, timeout; + Py_ssize_t len, n = -1; + int flags = 0, timeout; Py_buffer pbuf; if (!PyArg_ParseTuple(args, "y*|i:sendall", &pbuf, &flags)) @@ -2650,7 +2653,7 @@ } if (n < 0) return s->errorhandler(); - return PyLong_FromLong((long)n); + return PyLong_FromSsize_t(n); } PyDoc_STRVAR(sendto_doc, @@ -3942,7 +3945,7 @@ } #endif } - error = getnameinfo(res->ai_addr, res->ai_addrlen, + error = getnameinfo(res->ai_addr, (socklen_t) res->ai_addrlen, hbuf, sizeof(hbuf), pbuf, sizeof(pbuf), flags); if (error) { set_gaierror(error);
