Issue #25745: Fixed leaking a userptr in curses panel destructor.
diff --git a/Misc/NEWS b/Misc/NEWS
index f9bb8ef..d41910a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -116,6 +116,8 @@
Library
-------
+- Issue #25745: Fixed leaking a userptr in curses panel destructor.
+
- Issue #26881: The modulefinder module now supports extended opcode arguments.
- Issue #23815: Fixed crashes related to directly created instances of types in
diff --git a/Modules/_curses_panel.c b/Modules/_curses_panel.c
index c77e614..228f497 100644
--- a/Modules/_curses_panel.c
+++ b/Modules/_curses_panel.c
@@ -220,6 +220,11 @@
static void
PyCursesPanel_Dealloc(PyCursesPanelObject *po)
{
+ PyObject *obj = (PyObject *) panel_userptr(po->pan);
+ if (obj) {
+ (void)set_panel_userptr(po->pan, NULL);
+ Py_DECREF(obj);
+ }
(void)del_panel(po->pan);
if (po->wo != NULL) {
Py_DECREF(po->wo);