Browse Source

bpo-43321: Fix SystemError in getargs.c (GH-24656)

pull/24688/head
Inada Naoki 6 years ago
committed by GitHub
parent
commit
c71d24f558
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      Misc/NEWS.d/next/Core and Builtins/2021-02-26-13-17-52.bpo-43321.TCS3ph.rst
  2. 4
      Python/getargs.c

2
Misc/NEWS.d/next/Core and Builtins/2021-02-26-13-17-52.bpo-43321.TCS3ph.rst

@ -0,0 +1,2 @@
Fix ``SystemError`` raised when ``PyArg_Parse*()`` is used with ``#`` but
without ``PY_SSIZE_T_CLEAN`` defined.

4
Python/getargs.c

@ -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++;

Loading…
Cancel
Save