fix undefined shift operations on signed integers
This commit is contained in:
parent
934df19c52
commit
8e71a46173
2 changed files with 13 additions and 5 deletions
|
@ -414,7 +414,7 @@ SRC_UpdateReachability(SRC_Instance inst, int reachable)
|
||||||
{
|
{
|
||||||
inst->reachability <<= 1;
|
inst->reachability <<= 1;
|
||||||
inst->reachability |= !!reachable;
|
inst->reachability |= !!reachable;
|
||||||
inst->reachability &= ~(-1 << SOURCE_REACH_BITS);
|
inst->reachability %= 1U << SOURCE_REACH_BITS;
|
||||||
|
|
||||||
if (inst->reachability_size < SOURCE_REACH_BITS)
|
if (inst->reachability_size < SOURCE_REACH_BITS)
|
||||||
inst->reachability_size++;
|
inst->reachability_size++;
|
||||||
|
|
16
util.c
16
util.c
|
@ -352,7 +352,7 @@ UTI_IPToRefid(IPAddr *ip)
|
||||||
assert(0);
|
assert(0);
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
return buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3];
|
return (uint32_t)buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3];
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -796,11 +796,19 @@ UTI_TimevalHostToNetwork(struct timeval *src, Timeval *dest)
|
||||||
double
|
double
|
||||||
UTI_FloatNetworkToHost(Float f)
|
UTI_FloatNetworkToHost(Float f)
|
||||||
{
|
{
|
||||||
int32_t exp, coef, x;
|
int32_t exp, coef;
|
||||||
|
uint32_t x;
|
||||||
|
|
||||||
x = ntohl(f.f);
|
x = ntohl(f.f);
|
||||||
|
|
||||||
exp = (x >> FLOAT_COEF_BITS) - FLOAT_COEF_BITS;
|
exp = (x >> FLOAT_COEF_BITS) - FLOAT_COEF_BITS;
|
||||||
coef = x << FLOAT_EXP_BITS >> FLOAT_EXP_BITS;
|
if (exp >= 1 << (FLOAT_EXP_BITS - 1))
|
||||||
|
exp -= 1 << FLOAT_EXP_BITS;
|
||||||
|
|
||||||
|
coef = x % (1U << FLOAT_COEF_BITS);
|
||||||
|
if (coef >= 1 << (FLOAT_COEF_BITS - 1))
|
||||||
|
coef -= 1 << FLOAT_COEF_BITS;
|
||||||
|
|
||||||
return coef * pow(2.0, exp);
|
return coef * pow(2.0, exp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -857,7 +865,7 @@ UTI_FloatHostToNetwork(double x)
|
||||||
if (neg)
|
if (neg)
|
||||||
coef = (uint32_t)-coef << FLOAT_EXP_BITS >> FLOAT_EXP_BITS;
|
coef = (uint32_t)-coef << FLOAT_EXP_BITS >> FLOAT_EXP_BITS;
|
||||||
|
|
||||||
f.f = htonl(exp << FLOAT_COEF_BITS | coef);
|
f.f = htonl((uint32_t)exp << FLOAT_COEF_BITS | coef);
|
||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue