Browse Source
bpo-43321: Fix SystemError in getargs.c (GH-24656)
pull/24688/head
Inada Naoki
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
4 additions and
2 deletions
-
Misc/NEWS.d/next/Core and Builtins/2021-02-26-13-17-52.bpo-43321.TCS3ph.rst
-
Python/getargs.c
|
|
|
@ -0,0 +1,2 @@ |
|
|
|
Fix ``SystemError`` raised when ``PyArg_Parse*()`` is used with ``#`` but |
|
|
|
without ``PY_SSIZE_T_CLEAN`` defined. |
|
|
|
@ -655,14 +655,14 @@ static const char * |
|
|
|
convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, |
|
|
|
char *msgbuf, size_t bufsize, freelist_t *freelist) |
|
|
|
{ |
|
|
|
#define RETURN_ERR_OCCURRED return msgbuf |
|
|
|
/* For # codes */ |
|
|
|
#define REQUIRE_PY_SSIZE_T_CLEAN \ |
|
|
|
if (!(flags & FLAG_SIZE_T)) { \ |
|
|
|
PyErr_SetString(PyExc_SystemError, \ |
|
|
|
"PY_SSIZE_T_CLEAN macro must be defined for '#' formats"); \ |
|
|
|
return NULL; \ |
|
|
|
RETURN_ERR_OCCURRED; \ |
|
|
|
} |
|
|
|
#define RETURN_ERR_OCCURRED return msgbuf |
|
|
|
|
|
|
|
const char *format = *p_format; |
|
|
|
char c = *format++; |
|
|
|
|