Issue #18559: Fix NULL pointer dereference error in _pickle module
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;
     }