More strict compile time checks.
This commit is contained in:
parent
e2d5cfc954
commit
bd76cfc49e
@ -1593,9 +1593,11 @@ void lcurl_easy_initlib(lua_State *L, int nup){
|
||||
/* Hack. We ensure that lcurl_easy_t and lcurl_hpost_stream_t
|
||||
compatiable for readfunction
|
||||
*/
|
||||
LCURL_STATIC_ASSERT(offsetof(lcurl_easy_t, magic) == offsetof(lcurl_hpost_stream_t, magic));
|
||||
LCURL_STATIC_ASSERT(offsetof(lcurl_easy_t, L) == offsetof(lcurl_hpost_stream_t, L));
|
||||
LCURL_STATIC_ASSERT(offsetof(lcurl_easy_t, rd) == offsetof(lcurl_hpost_stream_t, rd));
|
||||
LCURL_ASSERT_SAME_OFFSET(lcurl_easy_t, magic, lcurl_hpost_stream_t, magic);
|
||||
LCURL_ASSERT_SAME_OFFSET(lcurl_easy_t, L, lcurl_hpost_stream_t, L);
|
||||
LCURL_ASSERT_SAME_OFFSET(lcurl_easy_t, rd, lcurl_hpost_stream_t, rd);
|
||||
LCURL_ASSERT_SAME_OFFSET(lcurl_easy_t, rbuffer, lcurl_hpost_stream_t, rbuffer);
|
||||
LCURL_ASSERT_SAME_FIELD_SIZE(lcurl_easy_t, rbuffer, lcurl_hpost_stream_t, rbuffer);
|
||||
|
||||
if(!lutil_createmetap(L, LCURL_EASY, lcurl_easy_methods, nup))
|
||||
lua_pop(L, nup);
|
||||
|
@ -28,8 +28,14 @@
|
||||
#define LCURL_MAKE_VERSION(MIN, MAJ, PAT) ((MIN<<16) + (MAJ<<8) + PAT)
|
||||
#define LCURL_CURL_VER_GE(MIN, MAJ, PAT) (LIBCURL_VERSION_NUM >= LCURL_MAKE_VERSION(MIN, MAJ, PAT))
|
||||
|
||||
//! @fixme on mingw32 (gcc 4.8.1) this does not work
|
||||
#define LCURL_STATIC_ASSERT(A) {(void)(int(*)[(A)?1:0])0;}
|
||||
//! @todo test on mingw32 (gcc 4.8.1)
|
||||
#define LCURL_CONCAT_STATIC_ASSERT_IMPL_(x, y) LCURL_CONCAT1_STATIC_ASSERT_IMPL_ (x, y)
|
||||
#define LCURL_CONCAT1_STATIC_ASSERT_IMPL_(x, y) x##y
|
||||
#define LCURL_STATIC_ASSERT(expr) typedef char LCURL_CONCAT_STATIC_ASSERT_IMPL_(static_assert_failed_at_line_, __LINE__) [(expr) ? 1 : -1]
|
||||
|
||||
#define LCURL_ASSERT_SAME_SIZE(a, b) LCURL_STATIC_ASSERT( sizeof(a) == sizeof(b) )
|
||||
#define LCURL_ASSERT_SAME_OFFSET(a, am, b, bm) LCURL_STATIC_ASSERT( (offsetof(a,am)) == (offsetof(b,bm)) )
|
||||
#define LCURL_ASSERT_SAME_FIELD_SIZE(a, am, b, bm) LCURL_ASSERT_SAME_SIZE(((a*)0)->am, ((b*)0)->bm)
|
||||
|
||||
typedef struct lcurl_const_tag{
|
||||
const char *name;
|
||||
|
Loading…
x
Reference in New Issue
Block a user