Issue #18559: Fix NULL pointer dereference error in _pickle module
diff --git a/Misc/NEWS b/Misc/NEWS
index 8c23a9e..24b0c53 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -52,6 +52,8 @@
 Library
 -------
 
+- Issue #18559: Fix NULL pointer dereference error in _pickle module
+
 - Issue #18556: Check the return value of a PyUnicode_AsWideChar() call in
   ctypes' U_set().
 
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index 0252c62..ce573cf 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -4816,9 +4816,10 @@
     value = _Unpickler_MemoGet(self, idx);
     if (value == NULL) {
         PyObject *key = PyLong_FromSsize_t(idx);
-        if (!PyErr_Occurred())
+        if (key != NULL) {
             PyErr_SetObject(PyExc_KeyError, key);
-        Py_DECREF(key);
+            Py_DECREF(key);
+        }
         return -1;
     }
 
@@ -4841,9 +4842,10 @@
     value = _Unpickler_MemoGet(self, idx);
     if (value == NULL) {
         PyObject *key = PyLong_FromSsize_t(idx);
-        if (!PyErr_Occurred())
+        if (key != NULL) {
             PyErr_SetObject(PyExc_KeyError, key);
-        Py_DECREF(key);
+            Py_DECREF(key);
+        }
         return -1;
     }