bpo-39209: Manage correctly multi-line tokens in interactive mode (GH-17860)

This commit is contained in:
Pablo Galindo 2020-01-06 15:59:09 +00:00 committed by GitHub
parent 075ebad369
commit 5ec91f78d5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 0 deletions

View file

@ -886,6 +886,7 @@ tok_nextc(struct tok_state *tok)
size_t start = tok->start - tok->buf;
size_t oldlen = tok->cur - tok->buf;
size_t newlen = oldlen + strlen(newtok);
Py_ssize_t cur_multi_line_start = tok->multi_line_start - tok->buf;
char *buf = tok->buf;
buf = (char *)PyMem_REALLOC(buf, newlen+1);
tok->lineno++;
@ -898,6 +899,7 @@ tok_nextc(struct tok_state *tok)
}
tok->buf = buf;
tok->cur = tok->buf + oldlen;
tok->multi_line_start = tok->buf + cur_multi_line_start;
tok->line_start = tok->cur;
strcpy(tok->buf + oldlen, newtok);
PyMem_FREE(newtok);