X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fbabeltrace%2Fbabeltrace-internal.h;fp=include%2Fbabeltrace%2Fbabeltrace-internal.h;h=981f84b186910cd7145fe04cb93c30805752e36c;hp=d58b9860c8b5c65a71a811a7799c1da495a1aaa9;hb=5b9e151d6a8c0327e67bca1706ef16525d1d319d;hpb=7fcdb0a96f75d66f5ff4f32d3ca78d7ca6067e4c diff --git a/include/babeltrace/babeltrace-internal.h b/include/babeltrace/babeltrace-internal.h index d58b9860..981f84b1 100644 --- a/include/babeltrace/babeltrace-internal.h +++ b/include/babeltrace/babeltrace-internal.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -61,6 +62,38 @@ ((type) (a) > (type) (b) ? (type) (a) : (type) (b)) #endif +static inline +bool bt_safe_to_mul_int64(int64_t a, int64_t b) +{ + if (a == 0 || b == 0) { + return true; + } + + return a < INT64_MAX / b; +} + +static inline +bool bt_safe_to_mul_uint64(uint64_t a, uint64_t b) +{ + if (a == 0 || b == 0) { + return true; + } + + return a < UINT64_MAX / b; +} + +static inline +bool bt_safe_to_add_int64(int64_t a, int64_t b) +{ + return a <= INT64_MAX - b; +} + +static inline +bool bt_safe_to_add_uint64(uint64_t a, uint64_t b) +{ + return a <= UINT64_MAX - b; +} + /* * Memory allocation zeroed */