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

(cherry picked from commit 5ec91f78d59d9c39b984f284e00cd04b96ddb5db)

Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index f84093d..f73c326 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -886,6 +886,7 @@
                 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->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);