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
|
/* Hack. We ensure that lcurl_easy_t and lcurl_hpost_stream_t
|
||||||
compatiable for readfunction
|
compatiable for readfunction
|
||||||
*/
|
*/
|
||||||
LCURL_STATIC_ASSERT(offsetof(lcurl_easy_t, magic) == offsetof(lcurl_hpost_stream_t, magic));
|
LCURL_ASSERT_SAME_OFFSET(lcurl_easy_t, magic, lcurl_hpost_stream_t, magic);
|
||||||
LCURL_STATIC_ASSERT(offsetof(lcurl_easy_t, L) == offsetof(lcurl_hpost_stream_t, L));
|
LCURL_ASSERT_SAME_OFFSET(lcurl_easy_t, L, 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, 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))
|
if(!lutil_createmetap(L, LCURL_EASY, lcurl_easy_methods, nup))
|
||||||
lua_pop(L, nup);
|
lua_pop(L, nup);
|
||||||
|
@ -28,8 +28,14 @@
|
|||||||
#define LCURL_MAKE_VERSION(MIN, MAJ, PAT) ((MIN<<16) + (MAJ<<8) + PAT)
|
#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))
|
#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
|
//! @todo test on mingw32 (gcc 4.8.1)
|
||||||
#define LCURL_STATIC_ASSERT(A) {(void)(int(*)[(A)?1:0])0;}
|
#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{
|
typedef struct lcurl_const_tag{
|
||||||
const char *name;
|
const char *name;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user