diff --git a/lib/base64.c b/lib/base64.c index dea74de9e..1820302a1 100644 --- a/lib/base64.c +++ b/lib/base64.c @@ -70,11 +70,11 @@ static void decodeQuantum(unsigned char *dest, const char *src) x = (x << 6); } - dest[2] = (unsigned char)(x & 0xFFUL); + dest[2] = Curl_ultouc(x); x >>= 8; - dest[1] = (unsigned char)(x & 0xFFUL); + dest[1] = Curl_ultouc(x); x >>= 8; - dest[0] = (unsigned char)(x & 0xFFUL); + dest[0] = Curl_ultouc(x); } /* diff --git a/lib/warnless.c b/lib/warnless.c index 83a1c68ab..94e77de46 100644 --- a/lib/warnless.c +++ b/lib/warnless.c @@ -38,3 +38,17 @@ unsigned short Curl_ultous(unsigned long ulnum) # pragma warning(pop) #endif } + +unsigned char Curl_ultouc(unsigned long ulnum) +{ +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:810) /* conversion may lose significant bits */ +#endif + + return (unsigned char)(ulnum & 0xFFUL); + +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif +} diff --git a/lib/warnless.h b/lib/warnless.h index cd257d3ed..d8734910a 100644 --- a/lib/warnless.h +++ b/lib/warnless.h @@ -25,4 +25,6 @@ unsigned short Curl_ultous(unsigned long ulnum); +unsigned char Curl_ultouc(unsigned long ulnum); + #endif /* HEADER_CURL_WARNLESS_H */