On 07/20/2012 06:32 PM, David Laight wrote:
quoted
- else if (rt->dst.expires - jiffies < INT_MAX)
- expires = rt->dst.expires - jiffies;
+ else if ((long)rt->dst.expires - (long)jiffies > INT_MIN
+ && (long)rt->dst.expires - (long)jiffies <
INT_MAX)
quoted
+ expires = (long)rt->dst.expires - (long)jiffies;
else
- expires = INT_MAX;
+ expires = time_is_after_jiffies(rt->dst.expires) ?
INT_MAX : INT_MIN;
I can't help feeling there is a better way to do this.
Maybe:
long expires = rt->dst.expires - jiffies;
if (expires != (int)expires)
expires = expires > 0 ? INT_MAX : INT_MIN;
Although maybe -INT_MAX instead of INT_MIN.
David
Thanks David, your code looks much cleaner and can archieve the same
function except we should use
long expires = (long)rt->dst.expires - (long)jiffies;
to avoid the wrapping of jiffies.
Thanks,
Wei