summaryrefslogtreecommitdiff
path: root/Include
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-09-20 23:10:16 +0200
committerGitHub <noreply@github.com>2019-09-20 23:10:16 +0200
commitb1542583bee204130934c2b90684041e29378250 (patch)
tree9f0097a25870859d9a2d533b4d9e690c4485cf09 /Include
parentbc2256ea177a653bcab15b06b5f5725b10c1fff3 (diff)
downloadcpython-git-b1542583bee204130934c2b90684041e29378250.tar.gz
bpo-38205: Py_UNREACHABLE() calls Py_FatalError() (GH-16290)
Diffstat (limited to 'Include')
-rw-r--r--Include/pymacro.h41
1 files changed, 18 insertions, 23 deletions
diff --git a/Include/pymacro.h b/Include/pymacro.h
index ae09063e10..c080fb164e 100644
--- a/Include/pymacro.h
+++ b/Include/pymacro.h
@@ -101,31 +101,26 @@
#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 */