diff --git a/ares/ares_data.c b/ares/ares_data.c index 16a5cc507..ee7601856 100644 --- a/ares/ares_data.c +++ b/ares/ares_data.c @@ -45,8 +45,18 @@ void ares_free_data(void *dataptr) if (!dataptr) return; +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:1684) + /* 1684: conversion from pointer to same-sized integral type */ +#endif + ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data)); +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif + if (ptr->mark != ARES_DATATYPE_MARK) return; @@ -134,8 +144,18 @@ ares_datatype ares_get_datatype(void * dataptr) { struct ares_data *ptr; +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:1684) + /* 1684: conversion from pointer to same-sized integral type */ +#endif + ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data)); +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif + if (ptr->mark == ARES_DATATYPE_MARK) return ptr->type; diff --git a/lib/base64.c b/lib/base64.c index d0f32f84a..dea74de9e 100644 --- a/lib/base64.c +++ b/lib/base64.c @@ -54,28 +54,27 @@ static const char table64[]= static void decodeQuantum(unsigned char *dest, const char *src) { - size_t x = 0; - int i; - char *found; - union { - ssize_t sig; - size_t uns; - } offset; + const char *s, *p; + unsigned long i, v, x = 0; - for(i = 0; i < 4; i++) { - if((found = strchr(table64, src[i])) != NULL) { - offset.sig = found - table64; - x = (x << 6) + offset.uns; + for(i = 0, s = src; i < 4; i++, s++) { + v = 0; + p = table64; + while(*p && (*p != *s)) { + v++; + p++; } - else if(src[i] == '=') + if(*p == *s) + x = (x << 6) + v; + else if(*s == '=') x = (x << 6); } - dest[2] = (unsigned char)(x & (size_t)0xFFUL); + dest[2] = (unsigned char)(x & 0xFFUL); x >>= 8; - dest[1] = (unsigned char)(x & (size_t)0xFFUL); + dest[1] = (unsigned char)(x & 0xFFUL); x >>= 8; - dest[0] = (unsigned char)(x & (size_t)0xFFUL); + dest[0] = (unsigned char)(x & 0xFFUL); } /* diff --git a/lib/memdebug.c b/lib/memdebug.c index 266480e46..b259ed3e5 100644 --- a/lib/memdebug.c +++ b/lib/memdebug.c @@ -221,9 +221,19 @@ void *curl_dorealloc(void *ptr, size_t wantedsize, if(countcheck("realloc", line, source)) return NULL; +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:1684) + /* 1684: conversion from pointer to same-sized integral type */ +#endif + if(ptr) mem = (void *)((char *)ptr - offsetof(struct memdebug, mem)); +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif + mem = (Curl_crealloc)(mem, size); if(source) curl_memlog("MEM %s:%d realloc(%p, %zu) = %p\n", @@ -243,8 +253,18 @@ void curl_dofree(void *ptr, int line, const char *source) assert(ptr != NULL); +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:1684) + /* 1684: conversion from pointer to same-sized integral type */ +#endif + mem = (void *)((char *)ptr - offsetof(struct memdebug, mem)); +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif + /* destroy */ memset(mem->mem, 0x13, mem->size);