[Tarantool-patches] [PATCH] sql: fix empty-body warning
Nikita Pettik
korablev at tarantool.org
Tue Dec 24 15:42:25 MSK 2019
GCC features warning diagnostics which allows to detect wrong ; right
after 'if' operator:
if (X == Y); {
...
}
In this case despite evaluation of 'if' argument expression, statements
after it will be always executed.
According to our codestyle, we neglect bracers around 'if' body in case
it consists of single statement and fits into one line. On the other
hand, in SQL debug macros like VdbeComment() are defined as empty, so
statements like:
if (X)
VdbeComment();
turn into
if (X) ;
in release builds. As a result, we get 'false' warning (which is
compilation error in -Werror mode). To fix it let's make VdbeComment()
macros be non-empty in release mode and expand them into (void) 0.
---
Branch: https://github.com/tarantool/tarantool/tree/np/fix-master-build
src/box/sql/vdbe.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/box/sql/vdbe.h b/src/box/sql/vdbe.h
index 582d48a1f..d6fa97d90 100644
--- a/src/box/sql/vdbe.h
+++ b/src/box/sql/vdbe.h
@@ -293,9 +293,9 @@ void sqlVdbeNoopComment(Vdbe *, const char *, ...);
#define VdbeModuleComment(X)
#endif
#else
-#define VdbeComment(X)
-#define VdbeNoopComment(X)
-#define VdbeModuleComment(X)
+#define VdbeComment(X) (void) 0
+#define VdbeNoopComment(X) (void) 0
+#define VdbeModuleComment(X) (void) 0
#endif
/*
--
2.15.1
More information about the Tarantool-patches
mailing list