Issue #5421: Fix misleading error message when one of socket.sendto()'s

arguments has the wrong type.  Patch by Nikita Vetoshkin.
This commit is contained in:
Antoine Pitrou 2011-03-17 22:38:37 +01:00
parent 9f9193ec37
commit 5e98141f9f
3 changed files with 21 additions and 6 deletions

View File

@ -823,6 +823,7 @@ Alexandre Vassalotti
Frank Vercruesse Frank Vercruesse
Mike Verdone Mike Verdone
Jaap Vermeulen Jaap Vermeulen
Nikita Vetoshkin
Al Vezza Al Vezza
Jacques A. Vidrine Jacques A. Vidrine
John Viega John Viega

View File

@ -40,6 +40,9 @@ Core and Builtins
Library Library
------- -------
- Issue #5421: Fix misleading error message when one of socket.sendto()'s
arguments has the wrong type. Patch by Nikita Vetoshkin.
- Issue #11401: fix handling of headers with no value; this fixes a regression - Issue #11401: fix handling of headers with no value; this fixes a regression
relative to Python2 and the result is now the same as it was in Python2. relative to Python2 and the result is now the same as it was in Python2.

View File

@ -2647,17 +2647,28 @@ sock_sendto(PySocketSockObject *s, PyObject *args)
Py_buffer pbuf; Py_buffer pbuf;
PyObject *addro; PyObject *addro;
char *buf; char *buf;
Py_ssize_t len; Py_ssize_t len, arglen;
sock_addr_t addrbuf; sock_addr_t addrbuf;
int addrlen, n = -1, flags, timeout; int addrlen, n = -1, flags, timeout;
flags = 0; flags = 0;
if (!PyArg_ParseTuple(args, "y*O:sendto", &pbuf, &addro)) { arglen = PyTuple_Size(args);
PyErr_Clear(); switch (arglen) {
if (!PyArg_ParseTuple(args, "y*iO:sendto", case 2:
&pbuf, &flags, &addro)) PyArg_ParseTuple(args, "y*O:sendto", &pbuf, &addro);
return NULL; break;
case 3:
PyArg_ParseTuple(args, "y*iO:sendto",
&pbuf, &flags, &addro);
break;
default:
PyErr_Format(PyExc_TypeError,
"sendto() takes 2 or 3 arguments (%d given)",
arglen);
} }
if (PyErr_Occurred())
return NULL;
buf = pbuf.buf; buf = pbuf.buf;
len = pbuf.len; len = pbuf.len;