cpython: 0a45896a7cde (original) (raw)
Mercurial > cpython
changeset 83976:0a45896a7cde
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. [#9369]
Serhiy Storchaka storchaka@gmail.com | |
---|---|
date | Wed, 29 May 2013 18:50:54 +0300 |
parents | 148000544c3f |
children | bcaaaa00425b |
files | Doc/c-api/object.rst Doc/data/refcounts.dat Include/abstract.h Misc/ACKS Misc/NEWS Objects/abstract.c |
diffstat | 6 files changed, 42 insertions(+), 22 deletions(-)[+] [-] Doc/c-api/object.rst 10 Doc/data/refcounts.dat 8 Include/abstract.h 23 Misc/ACKS 2 Misc/NEWS 4 Objects/abstract.c 17 |
line wrap: on
line diff
--- a/Doc/c-api/object.rst
+++ b/Doc/c-api/object.rst
@@ -240,7 +240,7 @@ is considered sufficient for this determ
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.
The C arguments are described using a :c:func:Py_BuildValue
style format
@@ -250,8 +250,11 @@ is considered sufficient for this determ
pass :c:type:PyObject \*
args, :c:func:PyObject_CallFunctionObjArgs
is a
faster alternative.
-.. 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
arguments. The C arguments are described by a :c:func:Py_BuildValue
format
@@ -261,6 +264,9 @@ is considered sufficient for this determ
Note that if you only pass :c:type:PyObject \*
args,
:c:func:PyObject_CallMethodObjArgs
is a faster alternative.
+ .. c:function:: PyObject* PyObject_CallFunctionObjArgs(PyObject *callable, ..., NULL)
--- a/Doc/data/refcounts.dat +++ b/Doc/data/refcounts.dat @@ -218,7 +218,7 @@ PyDict_GetItem:PyObject*:key:0: PyDict_GetItemString:PyObject*::0: PyDict_GetItemString:PyObject*:p:0: -PyDict_GetItemString:char*:key:: +PyDict_GetItemString:const char*:key:: PyDict_SetDefault:PyObject*::0: PyDict_SetDefault:PyObject*:p:0: @@ -917,7 +917,7 @@ PyObject_Call:PyObject*:kw:0: PyObject_CallFunction:PyObject*::+1: PyObject_CallFunction:PyObject*:callable_object:0: -PyObject_CallFunction:char*:format:: +PyObject_CallFunction:const char*:format:: PyObject_CallFunction::...:: PyObject_CallFunctionObjArgs:PyObject*::+1: @@ -926,8 +926,8 @@ PyObject_CallFunctionObjArgs::...:: PyObject_CallMethod:PyObject*::+1: PyObject_CallMethod:PyObject*:o:0: -PyObject_CallMethod:char*:m:: -PyObject_CallMethod:char*:format:: +PyObject_CallMethod:const char*:m:: +PyObject_CallMethod:const char*:format:: PyObject_CallMethod::...:: PyObject_CallMethodObjArgs:PyObject*::+1:
--- a/Include/abstract.h +++ b/Include/abstract.h @@ -284,7 +284,7 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ PyAPI_FUNC(PyObject *) PyObject_CallFunction(PyObject *callable_object,
char *format, ...);[](#l3.7)
const char *format, ...);[](#l3.8)
/* Call a callable Python object, callable_object, with a @@ -296,8 +296,9 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */
PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *o, char *method,[](#l3.16)
char *format, ...);[](#l3.17)
PyAPI_FUNC(PyObject *) PyObject_CallMethod(PyObject *o,[](#l3.18)
const char *method,[](#l3.19)
const char *format, ...);[](#l3.20)
/* Call the method named m of object o with a variable number of @@ -308,8 +309,9 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Python expression: o.method(args). */
PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *o, _Py_Identifier *method,[](#l3.28)
char *format, ...);[](#l3.29)
PyAPI_FUNC(PyObject *) _PyObject_CallMethodId(PyObject *o,[](#l3.30)
_Py_Identifier *method,[](#l3.31)
const char *format, ...);[](#l3.32)
/ Like PyObject_CallMethod, but expect a _Py_Identifier as the @@ -317,13 +319,16 @@ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ PyAPI_FUNC(PyObject *) _PyObject_CallFunction_SizeT(PyObject *callable,
char *format, ...);[](#l3.40)
const char *format,[](#l3.41)
...);[](#l3.42) PyAPI_FUNC(PyObject *) _PyObject_CallMethod_SizeT(PyObject *o,[](#l3.43)
char *name,[](#l3.44)
char *format, ...);[](#l3.45)
const char *name,[](#l3.46)
const char *format,[](#l3.47)
...);[](#l3.48) PyAPI_FUNC(PyObject *) _PyObject_CallMethodId_SizeT(PyObject *o,[](#l3.49) _Py_Identifier *name,[](#l3.50)
char *format, ...);[](#l3.51)
const char *format,[](#l3.52)
...);[](#l3.53)
PyAPI_FUNC(PyObject *) PyObject_CallFunctionObjArgs(PyObject *callable, ...);
--- a/Misc/ACKS +++ b/Misc/ACKS @@ -174,6 +174,7 @@ Floris Bruynooghe Stan Bubrouski Erik de Bueger Jan-Hein Bührman +Lars Buitinck Dick Bulterman Bill Bumgarner Jimmy Burgett @@ -872,6 +873,7 @@ Neil Muller Louis Munro R. David Murray Matti Mäki +Jörg Müller Dale Nagata John Nagle Takahiro Nakayama
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -387,6 +387,10 @@ Tests
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 expand their arguments once instead of multiple times. Patch written by Illia Polosukhin.
--- a/Objects/abstract.c +++ b/Objects/abstract.c @@ -2142,7 +2142,7 @@ call_function_tail(PyObject *callable, P } PyObject * -PyObject_CallFunction(PyObject *callable, char *format, ...) +PyObject_CallFunction(PyObject *callable, const char *format, ...) { va_list va; PyObject *args; @@ -2162,7 +2162,7 @@ PyObject_CallFunction(PyObject *callable } PyObject * -_PyObject_CallFunction_SizeT(PyObject *callable, char *format, ...) +_PyObject_CallFunction_SizeT(PyObject *callable, const char *format, ...) { va_list va; PyObject args; @@ -2182,7 +2182,7 @@ 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 args; @@ -2211,7 +2211,7 @@ callmethod(PyObject func, char *format, } PyObject * -PyObject_CallMethod(PyObject *o, char *name, char *format, ...) +PyObject_CallMethod(PyObject *o, const char *name, const char *format, ...) { va_list va; PyObject *func = NULL; @@ -2232,7 +2232,8 @@ PyObject_CallMethod(PyObject *o, char *n } PyObject * -_PyObject_CallMethodId(PyObject *o, _Py_Identifier *name, char *format, ...) +_PyObject_CallMethodId(PyObject *o, _Py_Identifier *name,
const char *format, ...)[](#l6.45)
{ va_list va; PyObject *func = NULL; @@ -2253,7 +2254,8 @@ PyObject * } PyObject * -_PyObject_CallMethod_SizeT(PyObject *o, char *name, char *format, ...) +_PyObject_CallMethod_SizeT(PyObject *o, const char *name,
const char *format, ...)[](#l6.55)
{ va_list va; PyObject *func = NULL; @@ -2273,7 +2275,8 @@ PyObject * } PyObject * -_PyObject_CallMethodId_SizeT(PyObject *o, _Py_Identifier *name, char *format, ...) +_PyObject_CallMethodId_SizeT(PyObject *o, _Py_Identifier *name,
const char *format, ...)[](#l6.65)