From a5cf28603ee6283a84971173ea81e1ede5da6050 Mon Sep 17 00:00:00 2001 From: isatyamks Date: Sat, 15 Feb 2025 23:56:54 +0530 Subject: [PATCH 1/4] Enhance GrammarVisitor to differentiate visit methods for single and multi-character node classes --- Tools/peg_generator/pegen/grammar.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Tools/peg_generator/pegen/grammar.py b/Tools/peg_generator/pegen/grammar.py index 1ee9d100b61f49..ad5f22bb8680dc 100644 --- a/Tools/peg_generator/pegen/grammar.py +++ b/Tools/peg_generator/pegen/grammar.py @@ -20,6 +20,10 @@ class GrammarVisitor: def visit(self, node: Any, *args: Any, **kwargs: Any) -> Any: """Visit a node.""" method = "visit_" + node.__class__.__name__ + if len(node.__class__.__name__) == 1: + method = "visit_single_" + node.__class__.__name__ + elif len(node.__class__.__name__) > 1: + method = "visit_multi_" + node.__class__.__name__ visitor = getattr(self, method, self.generic_visit) return visitor(node, *args, **kwargs) From b67b1aa87506a8317fff4b569264d80712434ece Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Sun, 16 Feb 2025 06:20:23 +0000 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../next/Build/2025-02-16-06-20-22.gh-issue-130077.DkWL_j.rst | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Misc/NEWS.d/next/Build/2025-02-16-06-20-22.gh-issue-130077.DkWL_j.rst 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. From af90e6d02653481e62684e8d4cde53abe67dbb19 Mon Sep 17 00:00:00 2001 From: Satyam Kumar Date: Sun, 16 Feb 2025 11:52:15 +0530 Subject: [PATCH 3/4] Update Tools/peg_generator/pegen/grammar.py Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com> --- Tools/peg_generator/pegen/grammar.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Tools/peg_generator/pegen/grammar.py b/Tools/peg_generator/pegen/grammar.py index ad5f22bb8680dc..845c16ac95dd9f 100644 --- a/Tools/peg_generator/pegen/grammar.py +++ b/Tools/peg_generator/pegen/grammar.py @@ -19,11 +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 = "visit_single_" + node.__class__.__name__ + method = f"visit_single_{node_cls}" elif len(node.__class__.__name__) > 1: - method = "visit_multi_" + node.__class__.__name__ + method = f"visit_multi_{node_cls}" visitor = getattr(self, method, self.generic_visit) return visitor(node, *args, **kwargs) From a359908fcfa18b921ca9b1e80ffc9039949059e6 Mon Sep 17 00:00:00 2001 From: "blurb-it[bot]" <43283697+blurb-it[bot]@users.noreply.github.com> Date: Sun, 16 Feb 2025 06:45:43 +0000 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=93=9C=F0=9F=A4=96=20Added=20by=20blu?= =?UTF-8?q?rb=5Fit.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../next/Build/2025-02-16-06-45-42.gh-issue-130077.DkWL_j.rst | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Misc/NEWS.d/next/Build/2025-02-16-06-45-42.gh-issue-130077.DkWL_j.rst 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.