X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fcast%2Fcast.h;h=dfb95b59772611bf53582b4b4ef132970104a829;hp=2fa96445b338f6b6b341b3f2aad122963e91054e;hb=1313203b72656e8480805c7688c187d274fdceeb;hpb=d5bb8e8d1c6731a3db234393c8d196b3b50084f2;ds=sidebyside 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)))) /**