[3.7] bpo-36367: Free buffer if realloc fails in tokenize.c (GH-12442) by vstinner · Pull Request #12471 · python/cpython

Expand Up @@ -733,9 +733,14 @@ translate_newlines(const char *s, int exec_input, struct tok_state *tok) { } *current = '\0'; final_length = current - buf + 1; if (final_length < needed_length && final_length) if (final_length < needed_length && final_length) { /* should never fail */ buf = PyMem_REALLOC(buf, final_length); char* result = PyMem_REALLOC(buf, final_length); if (result == NULL) { PyMem_FREE(buf); } buf = result; } return buf; }
Expand Down Expand Up @@ -1050,6 +1055,7 @@ tok_nextc(struct tok_state *tok) newbuf = (char *)PyMem_REALLOC(newbuf, newsize); if (newbuf == NULL) { PyMem_FREE(tok->buf); tok->done = E_NOMEM; tok->cur = tok->inp; return EOF; Expand Down