Issue #9369: The types of `char*` arguments of PyObject_CallFunction() and
PyObject_CallMethod() now changed to `const char*`. Based on patches by Jörg Müller and Lars Buitinck.
This commit is contained in:
parent
8d90e383a3
commit
1cfebc73e0
|
@ -240,7 +240,7 @@ is considered sufficient for this determination.
|
||||||
of the Python expression ``callable_object(*args)``.
|
of the Python expression ``callable_object(*args)``.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, char *format, ...)
|
.. c:function:: PyObject* PyObject_CallFunction(PyObject *callable, const char *format, ...)
|
||||||
|
|
||||||
Call a callable Python object *callable*, with a variable number of C arguments.
|
Call a callable Python object *callable*, with a variable number of C arguments.
|
||||||
The C arguments are described using a :c:func:`Py_BuildValue` style format
|
The C arguments are described using a :c:func:`Py_BuildValue` style format
|
||||||
|
@ -250,8 +250,11 @@ is considered sufficient for this determination.
|
||||||
pass :c:type:`PyObject \*` args, :c:func:`PyObject_CallFunctionObjArgs` is a
|
pass :c:type:`PyObject \*` args, :c:func:`PyObject_CallFunctionObjArgs` is a
|
||||||
faster alternative.
|
faster alternative.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.4
|
||||||
|
The type of *format* was changed from ``char *``.
|
||||||
|
|
||||||
.. c:function:: PyObject* PyObject_CallMethod(PyObject *o, char *method, char *format, ...)
|
|
||||||
|
.. c:function:: PyObject* PyObject_CallMethod(PyObject *o, const char *method, const char *format, ...)
|
||||||
|
|
||||||
Call the method named *method* of object *o* with a variable number of C
|
Call the method named *method* of object *o* with a variable number of C
|
||||||
arguments. The C arguments are described by a :c:func:`Py_BuildValue` format
|
arguments. The C arguments are described by a :c:func:`Py_BuildValue` format
|
||||||
|
@ -261,6 +264,9 @@ is considered sufficient for this determination.
|
||||||
Note that if you only pass :c:type:`PyObject \*` args,
|
Note that if you only pass :c:type:`PyObject \*` args,
|
||||||
:c:func:`PyObject_CallMethodObjArgs` is a faster alternative.
|
:c:func:`PyObject_CallMethodObjArgs` is a faster alternative.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.4
|
||||||
|
The types of *method* and *format* were changed from ``char *``.
|
||||||
|
|
||||||
|
|
||||||
.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
|
.. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
|
||||||
|
|
||||||
|
|
|
@ -218,7 +218,7 @@ PyDict_GetItem:PyObject*:key:0:
|
||||||
|
|
||||||
PyDict_GetItemString:PyObject*::0:
|
PyDict_GetItemString:PyObject*::0:
|
||||||
PyDict_GetItemString:PyObject*:p:0:
|
PyDict_GetItemString:PyObject*:p:0:
|
||||||
PyDict_GetItemString:char*:key::
|
PyDict_GetItemString:const char*:key::
|
||||||
|
|
||||||
PyDict_SetDefault:PyObject*::0:
|
PyDict_SetDefault:PyObject*::0:
|
||||||
PyDict_SetDefault:PyObject*:p:0:
|
PyDict_SetDefault:PyObject*:p:0:
|
||||||
|
@ -917,7 +917,7 @@ PyObject_Call:PyObject*:kw:0:
|
||||||
|
|
||||||
PyObject_CallFunction:PyObject*::+1:
|
PyObject_CallFunction:PyObject*::+1:
|
||||||
PyObject_CallFunction:PyObject*:callable_object:0:
|
PyObject_CallFunction:PyObject*:callable_object:0:
|
||||||
PyObject_CallFunction:char*:format::
|
PyObject_CallFunction:const char*:format::
|
||||||
PyObject_CallFunction::...::
|
PyObject_CallFunction::...::
|
||||||
|
|
||||||
PyObject_CallFunctionObjArgs:PyObject*::+1:
|
PyObject_CallFunctionObjArgs:PyObject*::+1:
|
||||||
|
@ -926,8 +926,8 @@ PyObject_CallFunctionObjArgs::...::
|
||||||
|
|
||||||
PyObject_CallMethod:PyObject*::+1:
|
PyObject_CallMethod:PyObject*::+1:
|
||||||
PyObject_CallMethod:PyObject*:o:0:
|
PyObject_CallMethod:PyObject*:o:0:
|
||||||
PyObject_CallMethod:char*:m::
|
PyObject_CallMethod:const char*:m::
|
||||||
PyObject_CallMethod:char*:format::
|
PyObject_CallMethod:const char*:format::
|
||||||
PyObject_CallMethod::...::
|
PyObject_CallMethod::...::
|
||||||
|
|
||||||
PyObject_CallMethodObjArgs:PyObject*::+1:
|
PyObject_CallMethodObjArgs:PyObject*::+1:
|
||||||
|
|
|
@ -284,7 +284,7 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable_object,
|
PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable_object,
|
||||||
char *format, ...);
|
const char *format, ...);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Call a callable Python object, callable_object, with a
|
Call a callable Python object, callable_object, with a
|
||||||
|
@ -296,8 +296,9 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *o, char *method,
|
PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *o,
|
||||||
char *format, ...);
|
const char *method,
|
||||||
|
const char *format, ...);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Call the method named m of object o with a variable number of
|
Call the method named m of object o with a variable number of
|
||||||
|
@ -308,8 +309,9 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
|
||||||
Python expression: o.method(args).
|
Python expression: o.method(args).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *o, _Py_Identifier *method,
|
PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *o,
|
||||||
char *format, ...);
|
_Py_Identifier *method,
|
||||||
|
const char *format, ...);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Like PyObject_CallMethod, but expect a _Py_Identifier* as the
|
Like PyObject_CallMethod, but expect a _Py_Identifier* as the
|
||||||
|
@ -317,13 +319,16 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
|
||||||
*/
|
*/
|
||||||
|
|
||||||
PyAPI_FUNC(PyObject *) _PyObject_CallFunction_SizeT(PyObject *callable,
|
PyAPI_FUNC(PyObject *) _PyObject_CallFunction_SizeT(PyObject *callable,
|
||||||
char *format, ...);
|
const char *format,
|
||||||
|
...);
|
||||||
PyAPI_FUNC(PyObject *) _PyObject_CallMethod_SizeT(PyObject *o,
|
PyAPI_FUNC(PyObject *) _PyObject_CallMethod_SizeT(PyObject *o,
|
||||||
char *name,
|
const char *name,
|
||||||
char *format, ...);
|
const char *format,
|
||||||
|
...);
|
||||||
PyAPI_FUNC(PyObject *) _PyObject_CallMethodId_SizeT(PyObject *o,
|
PyAPI_FUNC(PyObject *) _PyObject_CallMethodId_SizeT(PyObject *o,
|
||||||
_Py_Identifier *name,
|
_Py_Identifier *name,
|
||||||
char *format, ...);
|
const char *format,
|
||||||
|
...);
|
||||||
|
|
||||||
PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable,
|
PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable,
|
||||||
...);
|
...);
|
||||||
|
|
|
@ -174,6 +174,7 @@ Floris Bruynooghe
|
||||||
Stan Bubrouski
|
Stan Bubrouski
|
||||||
Erik de Bueger
|
Erik de Bueger
|
||||||
Jan-Hein Bührman
|
Jan-Hein Bührman
|
||||||
|
Lars Buitinck
|
||||||
Dick Bulterman
|
Dick Bulterman
|
||||||
Bill Bumgarner
|
Bill Bumgarner
|
||||||
Jimmy Burgett
|
Jimmy Burgett
|
||||||
|
@ -872,6 +873,7 @@ Neil Muller
|
||||||
Louis Munro
|
Louis Munro
|
||||||
R. David Murray
|
R. David Murray
|
||||||
Matti Mäki
|
Matti Mäki
|
||||||
|
Jörg Müller
|
||||||
Dale Nagata
|
Dale Nagata
|
||||||
John Nagle
|
John Nagle
|
||||||
Takahiro Nakayama
|
Takahiro Nakayama
|
||||||
|
|
|
@ -387,6 +387,10 @@ Tests
|
||||||
C-API
|
C-API
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #9369: The types of `char*` arguments of PyObject_CallFunction() and
|
||||||
|
PyObject_CallMethod() now changed to `const char*`. Based on patches by
|
||||||
|
Jörg Müller and Lars Buitinck.
|
||||||
|
|
||||||
- Issue #17206: Py_CLEAR(), Py_DECREF(), Py_XINCREF() and Py_XDECREF() now
|
- Issue #17206: Py_CLEAR(), Py_DECREF(), Py_XINCREF() and Py_XDECREF() now
|
||||||
expand their arguments once instead of multiple times. Patch written by Illia
|
expand their arguments once instead of multiple times. Patch written by Illia
|
||||||
Polosukhin.
|
Polosukhin.
|
||||||
|
|
|
@ -2142,7 +2142,7 @@ call_function_tail(PyObject *callable, PyObject *args)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
PyObject_CallFunction(PyObject *callable, char *format, ...)
|
PyObject_CallFunction(PyObject *callable, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
PyObject *args;
|
PyObject *args;
|
||||||
|
@ -2162,7 +2162,7 @@ PyObject_CallFunction(PyObject *callable, char *format, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
_PyObject_CallFunction_SizeT(PyObject *callable, char *format, ...)
|
_PyObject_CallFunction_SizeT(PyObject *callable, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
PyObject *args;
|
PyObject *args;
|
||||||
|
@ -2182,7 +2182,7 @@ _PyObject_CallFunction_SizeT(PyObject *callable, char *format, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject*
|
static PyObject*
|
||||||
callmethod(PyObject* func, char *format, va_list va, int is_size_t)
|
callmethod(PyObject* func, const char *format, va_list va, int is_size_t)
|
||||||
{
|
{
|
||||||
PyObject *retval = NULL;
|
PyObject *retval = NULL;
|
||||||
PyObject *args;
|
PyObject *args;
|
||||||
|
@ -2211,7 +2211,7 @@ callmethod(PyObject* func, char *format, va_list va, int is_size_t)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
PyObject_CallMethod(PyObject *o, char *name, char *format, ...)
|
PyObject_CallMethod(PyObject *o, const char *name, const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
PyObject *func = NULL;
|
PyObject *func = NULL;
|
||||||
|
@ -2232,7 +2232,8 @@ PyObject_CallMethod(PyObject *o, char *name, char *format, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
_PyObject_CallMethodId(PyObject *o, _Py_Identifier *name, char *format, ...)
|
_PyObject_CallMethodId(PyObject *o, _Py_Identifier *name,
|
||||||
|
const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
PyObject *func = NULL;
|
PyObject *func = NULL;
|
||||||
|
@ -2253,7 +2254,8 @@ _PyObject_CallMethodId(PyObject *o, _Py_Identifier *name, char *format, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
_PyObject_CallMethod_SizeT(PyObject *o, char *name, char *format, ...)
|
_PyObject_CallMethod_SizeT(PyObject *o, const char *name,
|
||||||
|
const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
PyObject *func = NULL;
|
PyObject *func = NULL;
|
||||||
|
@ -2273,7 +2275,8 @@ _PyObject_CallMethod_SizeT(PyObject *o, char *name, char *format, ...)
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
_PyObject_CallMethodId_SizeT(PyObject *o, _Py_Identifier *name, char *format, ...)
|
_PyObject_CallMethodId_SizeT(PyObject *o, _Py_Identifier *name,
|
||||||
|
const char *format, ...)
|
||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
PyObject *func = NULL;
|
PyObject *func = NULL;
|
||||||
|
|
Loading…
Reference in New Issue