fix #4720: the format to PyArg_ParseTupleAndKeywords can now start with '|'
This commit is contained in:
parent
1c39785256
commit
4caef5c7e2
|
@ -518,6 +518,32 @@ test_u_code(PyObject *self)
|
|||
return Py_None;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
test_empty_argparse(PyObject *self)
|
||||
{
|
||||
/* Test that formats can begin with '|'. See issue #4720. */
|
||||
PyObject *tuple, *dict = NULL;
|
||||
static char *kwlist[] = {NULL};
|
||||
int result;
|
||||
tuple = PyTuple_New(0);
|
||||
if (!tuple)
|
||||
return NULL;
|
||||
if ((result = PyArg_ParseTuple(tuple, "|:test_empty_argparse")) < 0)
|
||||
goto done;
|
||||
dict = PyDict_New();
|
||||
if (!dict)
|
||||
goto done;
|
||||
result = PyArg_ParseTupleAndKeywords(tuple, dict, "|:test_empty_argparse", kwlist);
|
||||
done:
|
||||
Py_DECREF(tuple);
|
||||
Py_XDECREF(dict);
|
||||
if (result < 0)
|
||||
return NULL;
|
||||
else {
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
codec_incrementalencoder(PyObject *self, PyObject *args)
|
||||
{
|
||||
|
@ -780,6 +806,7 @@ static PyMethodDef TestMethods[] = {
|
|||
{"test_long_api", (PyCFunction)test_long_api, METH_NOARGS},
|
||||
{"test_long_numbits", (PyCFunction)test_long_numbits, METH_NOARGS},
|
||||
{"test_k_code", (PyCFunction)test_k_code, METH_NOARGS},
|
||||
{"test_empty_argparse", (PyCFunction)test_empty_argparse,METH_NOARGS},
|
||||
{"test_null_strings", (PyCFunction)test_null_strings, METH_NOARGS},
|
||||
{"test_string_from_format", (PyCFunction)test_string_from_format, METH_NOARGS},
|
||||
{"test_with_docstring", (PyCFunction)test_with_docstring, METH_NOARGS,
|
||||
|
|
|
@ -1601,7 +1601,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
|
|||
}
|
||||
}
|
||||
|
||||
if (!IS_END_OF_FORMAT(*format)) {
|
||||
if (!IS_END_OF_FORMAT(*format) && *format != '|') {
|
||||
PyErr_Format(PyExc_RuntimeError,
|
||||
"more argument specifiers than keyword list entries "
|
||||
"(remaining format:'%s')", format);
|
||||
|
|
Loading…
Reference in New Issue