do not decref value borrowed from list (closes #27774)
diff --git a/Misc/NEWS b/Misc/NEWS
index 417da13..ce599cd 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -29,6 +29,8 @@
Library
-------
+- Issue #27774: Fix possible Py_DECREF on unowned object in _sre.
+
- Issue #27760: Fix possible integer overflow in binascii.b2a_qp.
- In the curses module, raise an error if window.getstr() or window.instr() is
diff --git a/Modules/_sre.c b/Modules/_sre.c
index 829fb6b..8e16c1d 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -3438,10 +3438,8 @@
if (!key)
goto failed;
value = match_getslice(self, key, def);
- if (!value) {
- Py_DECREF(key);
+ if (!value)
goto failed;
- }
status = PyDict_SetItem(result, key, value);
Py_DECREF(value);
if (status < 0)