Issue #18408: _PyObject_Dump() now saves/restores the current exception

So it can be called even if an exception was raised
diff --git a/Objects/object.c b/Objects/object.c
index 0561e09..006f0d4 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -406,11 +406,17 @@
 #ifdef WITH_THREAD
         PyGILState_STATE gil;
 #endif
+        PyObject *error_type, *error_value, *error_traceback;
+
         fprintf(stderr, "object  : ");
 #ifdef WITH_THREAD
         gil = PyGILState_Ensure();
 #endif
+
+        PyErr_Fetch(&error_type, &error_value, &error_traceback);
         (void)PyObject_Print(op, stderr, 0);
+        PyErr_Restore(error_type, error_value, error_traceback);
+
 #ifdef WITH_THREAD
         PyGILState_Release(gil);
 #endif