summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@python.org>2019-12-09 19:05:39 (GMT)
committerGitHub <noreply@github.com>2019-12-09 19:05:39 (GMT)
commitb8cbe74c3498c617f0e73fd0cdc5c07f2c532092 (patch)
treeab78352644177312c0902ea36122c324b510919b
parentac229116a34a679511c20bfeca167cc6a9df9807 (diff)
downloadcpython-b8cbe74c3498c617f0e73fd0cdc5c07f2c532092.zip
cpython-b8cbe74c3498c617f0e73fd0cdc5c07f2c532092.tar.gz
cpython-b8cbe74c3498c617f0e73fd0cdc5c07f2c532092.tar.bz2
bpo-39008: Require Py_ssize_t for PySys_Audit formats rather than raise a deprecation warning (GH-17540)
-rw-r--r--Doc/c-api/sys.rst8
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2019-12-09-10-38-51.bpo-39008.Rrp6f1.rst3
-rw-r--r--Python/sysmodule.c2
3 files changed, 12 insertions, 1 deletions
diff --git a/Doc/c-api/sys.rst b/Doc/c-api/sys.rst
index eccb8a6..c851ff6 100644
--- a/Doc/c-api/sys.rst
+++ b/Doc/c-api/sys.rst
@@ -320,10 +320,18 @@ accessible to C code. They all work with the current interpreter thread's
arguments to this function will be consumed, using it may cause reference
leaks.)
+ Note that ``#`` format characters should always be treated as
+ ``Py_ssize_t``, regardless of whether ``PY_SSIZE_T_CLEAN`` was defined.
+
:func:`sys.audit` performs the same function from Python code.
.. versionadded:: 3.8
+ .. versionchanged:: 3.8.2
+
+ Require ``Py_ssize_t`` for ``#`` format characters. Previously, an
+ unavoidable deprecation warning was raised.
+
.. c:function:: int PySys_AddAuditHook(Py_AuditHookFunction hook, void *userData)
diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-12-09-10-38-51.bpo-39008.Rrp6f1.rst b/Misc/NEWS.d/next/Core and Builtins/2019-12-09-10-38-51.bpo-39008.Rrp6f1.rst
new file mode 100644
index 0000000..35237ce
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2019-12-09-10-38-51.bpo-39008.Rrp6f1.rst
@@ -0,0 +1,3 @@
+:c:func:`PySys_Audit` now requires ``Py_ssize_t`` to be used for size
+arguments in the format string, regardless of whethen ``PY_SSIZE_T_CLEAN``
+was defined at include time.
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index b6bdf51..9f866a2 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -181,7 +181,7 @@ PySys_Audit(const char *event, const char *argFormat, ...)
if (argFormat && argFormat[0]) {
va_list args;
va_start(args, argFormat);
- eventArgs = Py_VaBuildValue(argFormat, args);
+ eventArgs = _Py_VaBuildValue_SizeT(argFormat, args);
va_end(args);
if (eventArgs && !PyTuple_Check(eventArgs)) {
PyObject *argTuple = PyTuple_Pack(1, eventArgs);