]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-38205: Py_UNREACHABLE() calls Py_FatalError() (GH-16290)
authorVictor Stinner <vstinner@redhat.com>
Fri, 20 Sep 2019 21:10:16 +0000 (23:10 +0200)
committerGitHub <noreply@github.com>
Fri, 20 Sep 2019 21:10:16 +0000 (23:10 +0200)
Include/pymacro.h
Misc/NEWS.d/next/C API/2019-09-19-18-26-29.bpo-38205.Db1OJL.rst [new file with mode: 0644]

index ae09063e10d87234cd7fedd44d7fd96189044dd7..c080fb164e353a5291ba71941648156aada6558f 100644 (file)
 #endif
 
 #if defined(RANDALL_WAS_HERE)
-#define Py_UNREACHABLE() do { \
-        fputs( \
-            "ERROR:\n\n" \
-            "If you're seeing this, the code is in what I thought was\n" \
-            "an unreachable state.\n\n" \
-            "I could give you advice for what to do, but honestly, why\n" \
-            "should you trust me?  I clearly screwed this up.  I'm writing\n" \
-            "a message that should never appear, yet I know it will\n" \
-            "probably appear someday.\n\n" \
-            "On a deep level, I know I'm not up to this task.\n" \
-            "I'm so sorry.\n\n" \
-            "https://xkcd.com/2200\n", stderr); \
-        abort(); \
-    } while(0)
+#define Py_UNREACHABLE() \
+    Py_FatalError( \
+        "If you're seeing this, the code is in what I thought was\n" \
+        "an unreachable state.\n\n" \
+        "I could give you advice for what to do, but honestly, why\n" \
+        "should you trust me?  I clearly screwed this up.  I'm writing\n" \
+        "a message that should never appear, yet I know it will\n" \
+        "probably appear someday.\n\n" \
+        "On a deep level, I know I'm not up to this task.\n" \
+        "I'm so sorry.\n" \
+        "https://xkcd.com/2200")
 #elif defined(Py_DEBUG)
-#define Py_UNREACHABLE() do { \
-        fputs( \
-            "ERROR:\n\n" \
-            "We've reached an unreachable state. Anything is possible.\n" \
-            "The limits were in our heads all along. Follow your dreams.\n\n" \
-            "https://xkcd.com/2200\n", stderr); \
-        abort(); \
-    } while(0)
+#define Py_UNREACHABLE() \
+    Py_FatalError( \
+        "We've reached an unreachable state. Anything is possible.\n" \
+        "The limits were in our heads all along. Follow your dreams.\n" \
+        "https://xkcd.com/2200")
 #else
-#define Py_UNREACHABLE() abort()
+#define Py_UNREACHABLE() \
+    Py_FatalError("Unreachable C code path reached")
 #endif
 
 #endif /* Py_PYMACRO_H */
diff --git a/Misc/NEWS.d/next/C API/2019-09-19-18-26-29.bpo-38205.Db1OJL.rst b/Misc/NEWS.d/next/C API/2019-09-19-18-26-29.bpo-38205.Db1OJL.rst
new file mode 100644 (file)
index 0000000..1818e54
--- /dev/null
@@ -0,0 +1 @@
+The :c:func:`Py_UNREACHABLE` macro now calls :c:func:`Py_FatalError`.