#2230: document that PyArg_* leaves addresses alone on error.

This commit is contained in:
Georg Brandl 2008-03-04 07:33:30 +00:00
parent 27504dae1b
commit fd6cabfe21
1 changed files with 8 additions and 4 deletions

View File

@ -208,7 +208,7 @@ variable(s) whose address should be passed.
:ctype:`void\*` argument that was passed to the :cfunc:`PyArg_Parse\*` function. :ctype:`void\*` argument that was passed to the :cfunc:`PyArg_Parse\*` function.
The returned *status* should be ``1`` for a successful conversion and ``0`` if The returned *status* should be ``1`` for a successful conversion and ``0`` if
the conversion has failed. When the conversion fails, the *converter* function the conversion has failed. When the conversion fails, the *converter* function
should raise an exception. should raise an exception and leave the content of *address* unmodified.
``S`` (string) [PyStringObject \*] ``S`` (string) [PyStringObject \*]
Like ``O`` but requires that the Python object is a string object. Raises Like ``O`` but requires that the Python object is a string object. Raises
@ -287,9 +287,13 @@ from the input tuple. There are a few cases, as described in the list of format
units above, where these parameters are used as input values; they should match units above, where these parameters are used as input values; they should match
what is specified for the corresponding format unit in that case. what is specified for the corresponding format unit in that case.
For the conversion to succeed, the *arg* object must match the format and the For the conversion to succeed, the *arg* object must match the format
format must be exhausted. On success, the :cfunc:`PyArg_Parse\*` functions and the format must be exhausted. On success, the
return true, otherwise they return false and raise an appropriate exception. :cfunc:`PyArg_Parse\*` functions return true, otherwise they return
false and raise an appropriate exception. When the
:cfunc:`PyArg_Parse\*` functions fail due to conversion failure in one
of the format units, the variables at the addresses corresponding to that
and the following format units are left untouched.
.. cfunction:: int PyArg_ParseTuple(PyObject *args, const char *format, ...) .. cfunction:: int PyArg_ParseTuple(PyObject *args, const char *format, ...)