NFC: Switch CHECK_INTERFACE to be a more friendly macro statement.
In the process of upgrading to clang r349610, an improvement to the
-Wextra-semi diagnostic now catches redundant semicolons in code.
CHECK_INTERFACE is a macro statement (currently using an if with a code
block that ends in a '}'). Since most callers are treating this as a
pseudo-function call, they terminate the macro with a semicolon. This
triggers the diagnostic, as we now have "if (...) { ... };", where the
semicolon is unnecessary.
To remedy these kinds of situations, it is better to construct macro
statements that require a semicolon to terminate them. This patch uses a
do/while wrapped around the existing statement, which is a pretty common
pattern for macro statements.
Bug: http://b/122481018
Test: m checkbuild
Change-Id: Ic2efc662f70f6b311e5d4581fb8e0eeb12a361f9
diff --git a/libs/binder/include/binder/IInterface.h b/libs/binder/include/binder/IInterface.h
index 5ec02b1..f6381f7 100644
--- a/libs/binder/include/binder/IInterface.h
+++ b/libs/binder/include/binder/IInterface.h
@@ -124,7 +124,9 @@
#define CHECK_INTERFACE(interface, data, reply) \
- if (!(data).checkInterface(this)) { return PERMISSION_DENIED; } \
+ do { \
+ if (!(data).checkInterface(this)) { return PERMISSION_DENIED; } \
+ } while (false) \
// ----------------------------------------------------------------------