diff options
author | Victor Stinner <vstinner@python.org> | 2023-11-01 15:34:42 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-01 15:34:42 (GMT) |
commit | d9b606b3d04fc56fb0bcc479d7d6c14562edb5e2 (patch) | |
tree | 14d10605507380e411d5f62e5bab28f74091129d /Python | |
parent | 97b3cd38d105fd891ba46dd27d08f03d1c6dd348 (diff) | |
download | cpython-d9b606b3d04fc56fb0bcc479d7d6c14562edb5e2.zip cpython-d9b606b3d04fc56fb0bcc479d7d6c14562edb5e2.tar.gz cpython-d9b606b3d04fc56fb0bcc479d7d6c14562edb5e2.tar.bz2 |
gh-111089: Use PyUnicode_AsUTF8() in Argument Clinic (#111585)
Replace PyUnicode_AsUTF8AndSize() with PyUnicode_AsUTF8() to remove
the explicit check for embedded null characters.
The change avoids to have to include explicitly <string.h> to get the
strlen() function when using a recent version of the limited C API.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/clinic/Python-tokenize.c.h | 9 | ||||
-rw-r--r-- | Python/clinic/bltinmodule.c.h | 9 | ||||
-rw-r--r-- | Python/clinic/sysmodule.c.h | 9 |
3 files changed, 6 insertions, 21 deletions
diff --git a/Python/clinic/Python-tokenize.c.h b/Python/clinic/Python-tokenize.c.h index 730fa8e..7417020 100644 --- a/Python/clinic/Python-tokenize.c.h +++ b/Python/clinic/Python-tokenize.c.h @@ -65,19 +65,14 @@ tokenizeriter_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) _PyArg_BadArgument("tokenizeriter", "argument 'encoding'", "str", fastargs[2]); goto exit; } - Py_ssize_t encoding_length; - encoding = PyUnicode_AsUTF8AndSize(fastargs[2], &encoding_length); + encoding = PyUnicode_AsUTF8(fastargs[2]); if (encoding == NULL) { goto exit; } - if (strlen(encoding) != (size_t)encoding_length) { - PyErr_SetString(PyExc_ValueError, "embedded null character"); - goto exit; - } skip_optional_kwonly: return_value = tokenizeriter_new_impl(type, readline, extra_tokens, encoding); exit: return return_value; } -/*[clinic end generated code: output=dcd6ec48f06a092e input=a9049054013a1b77]*/ +/*[clinic end generated code: output=92cb8176149f0924 input=a9049054013a1b77]*/ diff --git a/Python/clinic/bltinmodule.c.h b/Python/clinic/bltinmodule.c.h index 8d40e65..4fb06bd 100644 --- a/Python/clinic/bltinmodule.c.h +++ b/Python/clinic/bltinmodule.c.h @@ -329,15 +329,10 @@ builtin_compile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObj _PyArg_BadArgument("compile", "argument 'mode'", "str", args[2]); goto exit; } - Py_ssize_t mode_length; - mode = PyUnicode_AsUTF8AndSize(args[2], &mode_length); + mode = PyUnicode_AsUTF8(args[2]); if (mode == NULL) { goto exit; } - if (strlen(mode) != (size_t)mode_length) { - PyErr_SetString(PyExc_ValueError, "embedded null character"); - goto exit; - } if (!noptargs) { goto skip_optional_pos; } @@ -1212,4 +1207,4 @@ builtin_issubclass(PyObject *module, PyObject *const *args, Py_ssize_t nargs) exit: return return_value; } -/*[clinic end generated code: output=31bded5d08647a57 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=95d3813b1798f018 input=a9049054013a1b77]*/ diff --git a/Python/clinic/sysmodule.c.h b/Python/clinic/sysmodule.c.h index 98717ec..571a34b 100644 --- a/Python/clinic/sysmodule.c.h +++ b/Python/clinic/sysmodule.c.h @@ -1259,15 +1259,10 @@ sys_activate_stack_trampoline(PyObject *module, PyObject *arg) _PyArg_BadArgument("activate_stack_trampoline", "argument", "str", arg); goto exit; } - Py_ssize_t backend_length; - backend = PyUnicode_AsUTF8AndSize(arg, &backend_length); + backend = PyUnicode_AsUTF8(arg); if (backend == NULL) { goto exit; } - if (strlen(backend) != (size_t)backend_length) { - PyErr_SetString(PyExc_ValueError, "embedded null character"); - goto exit; - } return_value = sys_activate_stack_trampoline_impl(module, backend); exit: @@ -1452,4 +1447,4 @@ exit: #ifndef SYS_GETANDROIDAPILEVEL_METHODDEF #define SYS_GETANDROIDAPILEVEL_METHODDEF #endif /* !defined(SYS_GETANDROIDAPILEVEL_METHODDEF) */ -/*[clinic end generated code: output=f36d45c829250775 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=cdfb714878deeaf1 input=a9049054013a1b77]*/ |