Issue #23571: Enhance _Py_CheckFunctionResult()

Too bad, sometimes Py_FatalError() is unable to write the exception into
sys.stderr (on "AMD64 OpenIndiana 3.x" buildbot, the buildbot was probably out
of memory).

Call Py_FatalError() with a different message for the two cases (result+error,
or no result and no error).
diff --git a/Objects/abstract.c b/Objects/abstract.c
index 6f8432e..dc8fb37 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -2090,7 +2090,11 @@
                 PyErr_Format(PyExc_SystemError,
                              "%s returned NULL without setting an error",
                              where);
-            goto error;
+#ifdef Py_DEBUG
+            /* Ensure that the bug is catched in debug mode */
+            Py_FatalError("a function returned NULL without setting an error");
+#endif
+            return NULL;
         }
     }
     else {
@@ -2109,17 +2113,14 @@
                              "%s returned a result with an error set",
                              where);
             _PyErr_ChainExceptions(exc, val, tb);
-            goto error;
+#ifdef Py_DEBUG
+            /* Ensure that the bug is catched in debug mode */
+            Py_FatalError("a function returned a result with an error set");
+#endif
+            return NULL;
         }
     }
     return result;
-
-error:
-#ifdef Py_DEBUG
-    /* Ensure that the bug is catched in debug mode */
-    Py_FatalError("Function result is invalid");
-#endif
-    return NULL;
 }
 
 PyObject *