Skip to content

Commit

Permalink
bpo-44335: Ensure the tokenizer doesn't go into Python with the error…
Browse files Browse the repository at this point in the history
… set (pythonGH-26608)
  • Loading branch information
pablogsal committed Jun 8, 2021
1 parent 8004c45 commit bafe0aa
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions Parser/pegen.c
Expand Up @@ -1251,9 +1251,14 @@ _PyPegen_check_tokenizer_errors(Parser *p) {
return 0;
}

PyObject *type, *value, *traceback;
PyErr_Fetch(&type, &value, &traceback);

Token *current_token = p->known_err_token != NULL ? p->known_err_token : p->tokens[p->fill - 1];
Py_ssize_t current_err_line = current_token->lineno;

int ret = 0;

for (;;) {
const char *start;
const char *end;
Expand All @@ -1262,9 +1267,9 @@ _PyPegen_check_tokenizer_errors(Parser *p) {
if (p->tok->level != 0) {
int error_lineno = p->tok->parenlinenostack[p->tok->level-1];
if (current_err_line > error_lineno) {
PyErr_Clear();
raise_unclosed_parentheses_error(p);
return -1;
ret = -1;
goto exit;
}
}
break;
Expand All @@ -1276,7 +1281,16 @@ _PyPegen_check_tokenizer_errors(Parser *p) {
break;
}

return 0;

exit:
if (PyErr_Occurred()) {
Py_XDECREF(value);
Py_XDECREF(type);
Py_XDECREF(traceback);
} else {
PyErr_Restore(type, value, traceback);
}
return ret;
}

void *
Expand Down

0 comments on commit bafe0aa

Please sign in to comment.