diff --git a/Misc/NEWS.d/next/Build/2025-02-16-06-20-22.gh-issue-130077.DkWL_j.rst b/Misc/NEWS.d/next/Build/2025-02-16-06-20-22.gh-issue-130077.DkWL_j.rst new file mode 100644 index 00000000000000..8b2c19688cef6d --- /dev/null +++ b/Misc/NEWS.d/next/Build/2025-02-16-06-20-22.gh-issue-130077.DkWL_j.rst @@ -0,0 +1,3 @@ +Fix potential memory leak in c-field representation of Python objects + +Resolved a memory leak issue in the `_PyObject_CAST` macro by ensuring proper casting and handling of c-fields. This fix improves memory management and prevents unintended behavior in CPython's internal object representation. diff --git a/Misc/NEWS.d/next/Build/2025-02-16-06-45-42.gh-issue-130077.DkWL_j.rst b/Misc/NEWS.d/next/Build/2025-02-16-06-45-42.gh-issue-130077.DkWL_j.rst new file mode 100644 index 00000000000000..8b2c19688cef6d --- /dev/null +++ b/Misc/NEWS.d/next/Build/2025-02-16-06-45-42.gh-issue-130077.DkWL_j.rst @@ -0,0 +1,3 @@ +Fix potential memory leak in c-field representation of Python objects + +Resolved a memory leak issue in the `_PyObject_CAST` macro by ensuring proper casting and handling of c-fields. This fix improves memory management and prevents unintended behavior in CPython's internal object representation. diff --git a/Tools/peg_generator/pegen/grammar.py b/Tools/peg_generator/pegen/grammar.py index 1ee9d100b61f49..845c16ac95dd9f 100644 --- a/Tools/peg_generator/pegen/grammar.py +++ b/Tools/peg_generator/pegen/grammar.py @@ -19,7 +19,12 @@ class GrammarError(Exception): class GrammarVisitor: def visit(self, node: Any, *args: Any, **kwargs: Any) -> Any: """Visit a node.""" - method = "visit_" + node.__class__.__name__ + node_cls = node.__class__.__name__ + method = f"visit_{node_cls}" + if len(node.__class__.__name__) == 1: + method = f"visit_single_{node_cls}" + elif len(node.__class__.__name__) > 1: + method = f"visit_multi_{node_cls}" visitor = getattr(self, method, self.generic_visit) return visitor(node, *args, **kwargs)