@@ -55,18 +55,26 @@ GIT_INLINE(bool) git__add_uint64_overflow(uint64_t *out, uint64_t one, uint64_t
5555}
5656
5757/* Use clang/gcc compiler intrinsics whenever possible */
58- #if (SIZE_MAX == ULLONG_MAX ) && (__has_builtin (__builtin_uaddl_overflow ) || \
59- (defined(__GNUC__ ) && (__GNUC__ >= 5 )))
60- # define git__add_sizet_overflow (out , one , two ) \
61- __builtin_uaddl_overflow(one, two, out)
62- # define git__multiply_sizet_overflow (out , one , two ) \
63- __builtin_umull_overflow(one, two, out)
64- #elif (__has_builtin (__builtin_add_overflow ) || \
65- (defined(__GNUC__ ) && (__GNUC__ >= 5 )))
66- # define git__add_sizet_overflow (out , one , two ) \
67- __builtin_add_overflow(one, two, out)
68- # define git__multiply_sizet_overflow (out , one , two ) \
69- __builtin_mul_overflow(one, two, out)
58+ #if (__has_builtin (__builtin_add_overflow ) || \
59+ (defined(__GNUC__ ) && (__GNUC__ >= 5 )))
60+
61+ # if (ULONG_MAX == ULLONG_MAX ) && defined(_WIN64 )
62+ # define git__add_sizet_overflow (out , one , two ) \
63+ __builtin_uaddll_overflow(one, two, out)
64+ # define git__multiply_sizet_overflow (out , one , two ) \
65+ __builtin_umulll_overflow(one, two, out)
66+ # elif (ULONG_MAX == ULLONG_MAX )
67+ # define git__add_sizet_overflow (out , one , two ) \
68+ __builtin_uaddl_overflow(one, two, out)
69+ # define git__multiply_sizet_overflow (out , one , two ) \
70+ __builtin_umull_overflow(one, two, out)
71+ # else
72+ # define git__add_sizet_overflow (out , one , two ) \
73+ __builtin_add_overflow(one, two, out)
74+ # define git__multiply_sizet_overflow (out , one , two ) \
75+ __builtin_mul_overflow(one, two, out)
76+ # endif
77+
7078#else
7179
7280/**
0 commit comments