summaryrefslogtreecommitdiffstats
path: root/Parser/pegen_errors.c
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2022-07-05 17:09:51 (GMT)
committerGitHub <noreply@github.com>2022-07-05 17:09:51 (GMT)
commitd49c99f10d66e6c485bde7e35d79dea07f3c90eb (patch)
treec271de2970426b1015b70b566644dbb421cf276c /Parser/pegen_errors.c
parent9bd97a2a7e542aca2635cc53d74b286944653316 (diff)
downloadcpython-d49c99f10d66e6c485bde7e35d79dea07f3c90eb.zip
cpython-d49c99f10d66e6c485bde7e35d79dea07f3c90eb.tar.gz
cpython-d49c99f10d66e6c485bde7e35d79dea07f3c90eb.tar.bz2
gh-94360: Fix a tokenizer crash when reading encoded files with syntax errors from stdin (GH-94386)
* gh-94360: Fix a tokenizer crash when reading encoded files with syntax errors from stdin Signed-off-by: Pablo Galindo <pablogsal@gmail.com> * nitty nit Co-authored-by: Ɓukasz Langa <lukasz@langa.pl> (cherry picked from commit 36fcde61ba48c4e918830691ecf4092e4e3b9b99) Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
Diffstat (limited to 'Parser/pegen_errors.c')
-rw-r--r--Parser/pegen_errors.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/Parser/pegen_errors.c b/Parser/pegen_errors.c
index 4896996..5703088 100644
--- a/Parser/pegen_errors.c
+++ b/Parser/pegen_errors.c
@@ -259,15 +259,15 @@ get_error_line_from_tokenizer_buffers(Parser *p, Py_ssize_t lineno)
const char* buf_end = p->tok->fp_interactive ? p->tok->interactive_src_end : p->tok->inp;
for (int i = 0; i < relative_lineno - 1; i++) {
- char *new_line = strchr(cur_line, '\n') + 1;
+ char *new_line = strchr(cur_line, '\n');
// The assert is here for debug builds but the conditional that
// follows is there so in release builds we do not crash at the cost
// to report a potentially wrong line.
- assert(new_line != NULL && new_line <= buf_end);
- if (new_line == NULL || new_line > buf_end) {
+ assert(new_line != NULL && new_line + 1 < buf_end);
+ if (new_line == NULL || new_line + 1 > buf_end) {
break;
}
- cur_line = new_line;
+ cur_line = new_line + 1;
}
char *next_newline;