diff options
Diffstat (limited to 'util.h')
| -rw-r--r-- | util.h | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -1,6 +1,9 @@ #ifndef UTIL_H #define UTIL_H +#include <stdint.h> +#include <stdbool.h> + #define LENGTH(x) ((int)(sizeof (x) / sizeof *(x))) #define MIN(a, b) ((a) > (b) ? (b) : (a)) #define MAX(a, b) ((a) < (b) ? (b) : (a)) @@ -9,4 +12,15 @@ #define ISUTF8(c) (((c)&0xC0)!=0x80) #define ISASCII(ch) ((unsigned char)ch < 0x80) +#if GCC_VERSION>=5004000 || CLANG_VERSION>=4000000 +#define addu __builtin_add_overflow +#else +static inline bool addu(size_t a, size_t b, size_t *c) { + if (SIZE_MAX - a < b) + return false; + *c = a + b; + return true; +} +#endif + #endif |
