mirror of
https://github.com/python/cpython.git
synced 2025-07-13 06:15:17 +00:00
Issue #8950: Make PyArg_Parse* with 'L' code raise for float inputs,
instead of warning. This makes it consistent with the other integer codes.
This commit is contained in:
parent
37296e89a5
commit
c73013127b
3 changed files with 9 additions and 33 deletions
|
@ -582,19 +582,6 @@ converterr(const char *expected, PyObject *arg, char *msgbuf, size_t bufsize)
|
|||
|
||||
#define CONV_UNICODE "(unicode conversion error)"
|
||||
|
||||
/* explicitly check for float arguments when integers are expected. For now
|
||||
* signal a warning. Returns true if an exception was raised. */
|
||||
static int
|
||||
float_argument_warning(PyObject *arg)
|
||||
{
|
||||
if (PyFloat_Check(arg) &&
|
||||
PyErr_Warn(PyExc_DeprecationWarning,
|
||||
"integer argument expected, got float" ))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Explicitly check for float arguments when integers are expected.
|
||||
Return 1 for error, 0 if ok. */
|
||||
static int
|
||||
|
@ -791,14 +778,13 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
|
|||
case 'L': {/* PY_LONG_LONG */
|
||||
PY_LONG_LONG *p = va_arg( *p_va, PY_LONG_LONG * );
|
||||
PY_LONG_LONG ival;
|
||||
if (float_argument_warning(arg))
|
||||
if (float_argument_error(arg))
|
||||
return converterr("long<L>", arg, msgbuf, bufsize);
|
||||
ival = PyLong_AsLongLong(arg);
|
||||
if (ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) {
|
||||
if (ival == (PY_LONG_LONG)-1 && PyErr_Occurred())
|
||||
return converterr("long<L>", arg, msgbuf, bufsize);
|
||||
} else {
|
||||
else
|
||||
*p = ival;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue