Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork34.1k
Closed
Description
PyArg_ParseTuple(args, "u#", ...) generates a deprecation warning, as expected:
$python3 --versionPython 3.11.0b4$python3 -c'import _testcapi as t; t.getargs_u_hash("")'<string>:1: DeprecationWarning: getargs: The 'u' format is deprecated. Use 'U' instead.
But when I turn warnings into exceptions, something weird happens:
$python3 -Werror -c'import _testcapi as t; t.getargs_u_hash("")'Traceback (most recent call last): File "<string>", line 1, in <module>ValueError: character U+b4000360 is not in range [U+0000; U+10ffff]
What's going on here? The code forgetargs_u_hash() looks like this:
Py_UNICODE*str;Py_ssize_tsize;if (!PyArg_ParseTuple(args,"u#",&str,&size))returnNULL;returnPyUnicode_FromWideChar(str,size);
So it looks likePyArg_ParseTuple() returns true, but leavesstr andsize uninitialized.