util-lib: make sure usec_sub() doesn't degrade USEC_INFINITY

As suggested in: https://github.com/systemd/systemd/pull/2542#issuecomment-181877820
This commit is contained in:
Lennart Poettering
2016-02-10 13:26:56 +01:00
parent 6bf0f408e4
commit 04a1d84cef
2 changed files with 21 additions and 6 deletions
+8 -6
View File
@@ -143,11 +143,13 @@ static inline usec_t usec_add(usec_t a, usec_t b) {
static inline usec_t usec_sub(usec_t timestamp, int64_t delta) {
if (delta < 0)
timestamp = usec_add(timestamp, (usec_t) (-delta));
else if (timestamp > (usec_t) delta)
timestamp -= delta;
else
timestamp = 0;
return usec_add(timestamp, (usec_t) (-delta));
return timestamp;
if (timestamp == USEC_INFINITY) /* Make sure infinity doesn't degrade */
return USEC_INFINITY;
if (timestamp < (usec_t) delta)
return 0;
return timestamp - delta;
}