summaryrefslogtreecommitdiff
path: root/src/shared/macro.h
diff options
context:
space:
mode:
authorHarald Hoyer <harald@redhat.com>2013-04-18 12:05:41 +0200
committerHarald Hoyer <harald@redhat.com>2013-04-18 12:05:41 +0200
commita858b64dddf79177e12ed30f5e8c47a1471c8bfe (patch)
tree03d1603458599d8b49c5d553d407eea0164ac664 /src/shared/macro.h
parent98f59e59e0c31ffcb953d3a7dba0da5e6f2f55f7 (diff)
macro.h: let F_TYPE_CMP() macro fail to compile, if second parameter is not const
If the magic parameter is not a const, then the macro does not work, so better fail to compile, than be surprised afterwards.
Diffstat (limited to 'src/shared/macro.h')
-rw-r--r--src/shared/macro.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/shared/macro.h b/src/shared/macro.h
index 08b40fd2b8..2bb72f0d16 100644
--- a/src/shared/macro.h
+++ b/src/shared/macro.h
@@ -272,11 +272,12 @@ do { \
* signed int in the kernel and these negative numbers are extended to
* long, which cannot be simply compared to the magic constants anymore.
*/
-#define F_TYPE_CMP(f, c) \
+#define F_TYPE_CMP(f_type, magic) \
__extension__ ({ \
- __SWORD_TYPE _f = (f); \
- const __SWORD_TYPE _c = (c); \
- const int _c32 = (c); \
+ __SWORD_TYPE _f = (f_type); \
+ const __SWORD_TYPE _c = (magic); \
+ const int _c32 = 1 ? (magic) \
+ : sizeof((int[magic]){0}); \
(_f == _c || _f == _c32 ); \
})