From 1313203b72656e8480805c7688c187d274fdceeb Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Mon, 21 Mar 2011 22:17:42 +1030 Subject: [PATCH] cast: fix compilation with GCC's -Wcast-qual Samba uses -Wcast-qual to warn about casting away const. The kind of coders who care about const correctness are likely to turn that option on, so we should make sure it's compatible with cast_const(). --- ccan/cast/cast.h | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ccan/cast/cast.h b/ccan/cast/cast.h index 2fa96445..dfb95b59 100644 --- a/ccan/cast/cast.h +++ b/ccan/cast/cast.h @@ -1,6 +1,7 @@ #ifndef CCAN_CAST_H #define CCAN_CAST_H #include "config.h" +#include #include /** @@ -37,9 +38,9 @@ * return NULL; * } */ -#define cast_const(type, expr) \ - ((type)(expr) \ - + BUILD_ASSERT_OR_ZERO(cast_const_compat1((expr), type))) +#define cast_const(type, expr) \ + ((type)((intptr_t)(expr) \ + + BUILD_ASSERT_OR_ZERO(cast_const_compat1((expr), type)))) /** * cast_const2 - remove a const qualifier from a pointer to a pointer. @@ -49,9 +50,9 @@ * This ensures that you are only removing the const qualifier from an * expression. The expression must otherwise match @type. */ -#define cast_const2(type, expr) \ - ((type)(expr) \ - + BUILD_ASSERT_OR_ZERO(cast_const_compat2((expr), type))) +#define cast_const2(type, expr) \ + ((type)((intptr_t)(expr) \ + + BUILD_ASSERT_OR_ZERO(cast_const_compat2((expr), type)))) /** * cast_const3 - remove a const from a pointer to a pointer to a pointer.. @@ -61,9 +62,9 @@ * This ensures that you are only removing the const qualifier from an * expression. The expression must otherwise match @type. */ -#define cast_const3(type, expr) \ - ((type)(expr) \ - + BUILD_ASSERT_OR_ZERO(cast_const_compat3((expr), type))) +#define cast_const3(type, expr) \ + ((type)((intptr_t)(expr) \ + + BUILD_ASSERT_OR_ZERO(cast_const_compat3((expr), type)))) /** -- 2.39.2