From 0fa6366ed15f48b3ec227987f21f339180fb4936 Mon Sep 17 00:00:00 2001 From: "kwiberg@webrtc.org" Date: Wed, 16 Jul 2014 08:34:58 +0000 Subject: [PATCH] Define convenient FATAL_ERROR() and FATAL_ERROR_IF() macros R=henrike@webrtc.org Review URL: https://webrtc-codereview.appspot.com/16079004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6701 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/base/checks.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/webrtc/base/checks.h b/webrtc/base/checks.h index 7b02ffbb4a..b85b50ae31 100644 --- a/webrtc/base/checks.h +++ b/webrtc/base/checks.h @@ -21,8 +21,17 @@ void Fatal(const char* file, int line, const char* format, ...); } // namespace rtc +// Trigger a fatal error (which aborts the process and prints an error +// message). FATAL_ERROR_IF may seem a lot like assert, but there's a crucial +// difference: it's always "on". This means that it can be used to check for +// regular errors that could actually happen, not just programming errors that +// supposedly can't happen---but triggering a fatal error will kill the process +// in an ugly way, so it's not suitable for catching errors that might happen +// in production. +#define FATAL_ERROR(msg) do { rtc::Fatal(__FILE__, __LINE__, msg); } while (0) +#define FATAL_ERROR_IF(x) do { if (x) FATAL_ERROR("check failed"); } while (0) + // The UNREACHABLE macro is very useful during development. -#define UNREACHABLE() \ - rtc::Fatal(__FILE__, __LINE__, "unreachable code") +#define UNREACHABLE() FATAL_ERROR("unreachable code") #endif // WEBRTC_BASE_CHECKS_H_