diff --git a/src/backend/utils/adt/inet_cidr_ntop.c b/src/backend/utils/adt/inet_cidr_ntop.c index 5a30df16e54..a4193e2ccec 100644 --- a/src/backend/utils/adt/inet_cidr_ntop.c +++ b/src/backend/utils/adt/inet_cidr_ntop.c @@ -202,7 +202,7 @@ inet_cidr_ntop_ipv6(const u_char *src, int bits, char *dst, size_t size) b = bits % 8; if (b != 0) { - m = ~0 << (8 - b); + m = ((u_int) ~0) << (8 - b); inbuf[p - 1] &= m; } diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c index 350b1a63d21..5af7f4e0468 100644 --- a/src/backend/utils/adt/network.c +++ b/src/backend/utils/adt/network.c @@ -1486,7 +1486,7 @@ inetmi(PG_FUNCTION_ARGS) * have to do proper sign extension. */ if (carry == 0 && byte < sizeof(int64)) - res |= ((int64) -1) << (byte * 8); + res |= ((uint64) (int64) -1) << (byte * 8); } PG_RETURN_INT64(res); diff --git a/src/backend/utils/adt/varbit.c b/src/backend/utils/adt/varbit.c index 6ba400b699c..d8a58160f41 100644 --- a/src/backend/utils/adt/varbit.c +++ b/src/backend/utils/adt/varbit.c @@ -1539,11 +1539,11 @@ bitfromint4(PG_FUNCTION_ARGS) /* store first fractional byte */ if (destbitsleft > srcbitsleft) { - int val = (int) (a >> (destbitsleft - 8)); + unsigned int val = (unsigned int) (a >> (destbitsleft - 8)); /* Force sign-fill in case the compiler implements >> as zero-fill */ if (a < 0) - val |= (-1) << (srcbitsleft + 8 - destbitsleft); + val |= ((unsigned int) -1) << (srcbitsleft + 8 - destbitsleft); *r++ = (bits8) (val & BITMASK); destbitsleft -= 8; } @@ -1619,11 +1619,11 @@ bitfromint8(PG_FUNCTION_ARGS) /* store first fractional byte */ if (destbitsleft > srcbitsleft) { - int val = (int) (a >> (destbitsleft - 8)); + unsigned int val = (unsigned int) (a >> (destbitsleft - 8)); /* Force sign-fill in case the compiler implements >> as zero-fill */ if (a < 0) - val |= (-1) << (srcbitsleft + 8 - destbitsleft); + val |= ((unsigned int) -1) << (srcbitsleft + 8 - destbitsleft); *r++ = (bits8) (val & BITMASK); destbitsleft -= 8; }