From 48a2b0129d57961e1719b993c6957f8931b527ad Mon Sep 17 00:00:00 2001 From: Mae <22501070+biglizards@users.noreply.github.com> Date: Wed, 30 Apr 2025 11:25:16 +0100 Subject: [PATCH 1/2] Remove redundant incref of immortal object Py_EMPTY_KEYS --- Objects/dictobject.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Objects/dictobject.c b/Objects/dictobject.c index b6f623b8ce9df6..7bfb578d46aaec 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -4853,7 +4853,7 @@ dict_new(PyTypeObject *type, PyObject *args, PyObject *kwds) d->ma_used = 0; d->_ma_watcher_tag = 0; - dictkeys_incref(Py_EMPTY_KEYS); + // We don't inc ref empty keys because they're immortal d->ma_keys = Py_EMPTY_KEYS; d->ma_values = NULL; ASSERT_CONSISTENT(d); From cea7e26638087da200c5e0a5864e238c0acaf7e8 Mon Sep 17 00:00:00 2001 From: Mae <22501070+biglizards@users.noreply.github.com> Date: Wed, 30 Apr 2025 12:58:41 +0100 Subject: [PATCH 2/2] add assert that Py_EMPTY_KEYS is immortal --- Objects/dictobject.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 7bfb578d46aaec..3a0d5ea9f8aa3d 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -4854,6 +4854,7 @@ dict_new(PyTypeObject *type, PyObject *args, PyObject *kwds) d->ma_used = 0; d->_ma_watcher_tag = 0; // We don't inc ref empty keys because they're immortal + assert((Py_EMPTY_KEYS)->dk_refcnt == _Py_DICT_IMMORTAL_INITIAL_REFCNT); d->ma_keys = Py_EMPTY_KEYS; d->ma_values = NULL; ASSERT_CONSISTENT(d);