https://github.com/python/cpython/commit/37968845284501a536a96b9fdafab83d43dd9b9d
commit: 37968845284501a536a96b9fdafab83d43dd9b9d
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2025-03-27T10:03:58+01:00
summary:
gh-111178: Skip undefined behavior checks in _PyPegen_lookahead() (#131714)
For example, expression_rule() return type is 'expr_ty', whereas
_PyPegen_lookahead() uses 'void*'.
files:
M Parser/pegen.c
diff --git a/Parser/pegen.c b/Parser/pegen.c
index 592269ead31e39..75fdd467e55045 100644
--- a/Parser/pegen.c
+++ b/Parser/pegen.c
@@ -406,11 +406,14 @@ _PyPegen_lookahead_with_int(int positive, Token
*(func)(Parser *, int), Parser *
return (res != NULL) == positive;
}
-int
+// gh-111178: Use _Py_NO_SANITIZE_UNDEFINED to disable sanitizer checks on
+// undefined behavior (UBsan) in this function, rather than changing 'func'
+// callback API.
+int _Py_NO_SANITIZE_UNDEFINED
_PyPegen_lookahead(int positive, void *(func)(Parser *), Parser *p)
{
int mark = p->mark;
- void *res = (void*)func(p);
+ void *res = func(p);
p->mark = mark;
return (res != NULL) == positive;
}
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]