[vlc-commits] include: guard overflow builtins

Rémi Denis-Courmont git at videolan.org
Fri Nov 24 20:54:29 CET 2017


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Nov 23 22:09:17 2017 +0200| [12efcaae59cd6b4b141a43edd45c028e9a1160eb] | committer: Rémi Denis-Courmont

include: guard overflow builtins

Pointed-out-by: KO Myung-Hun <komh78 at gmail.com>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=12efcaae59cd6b4b141a43edd45c028e9a1160eb
---

 include/vlc_common.h | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/include/vlc_common.h b/include/vlc_common.h
index 6364afd44f..936df33bb6 100644
--- a/include/vlc_common.h
+++ b/include/vlc_common.h
@@ -47,7 +47,6 @@
 #include <stdio.h>
 #include <inttypes.h>
 #include <stddef.h>
-#include <limits.h>
 
 #ifndef __cplusplus
 # include <stdbool.h>
@@ -654,7 +653,7 @@ static inline uint64_t (bswap64)(uint64_t x)
 /* Integer overflow */
 static inline bool uadd_overflow(unsigned a, unsigned b, unsigned *res)
 {
-#if defined(__GNUC__) || defined(__clang__)
+#if VLC_GCC_VERSION(5,0) || defined(__clang__)
      return __builtin_uadd_overflow(a, b, res);
 #else
      *res = a + b;
@@ -665,7 +664,7 @@ static inline bool uadd_overflow(unsigned a, unsigned b, unsigned *res)
 static inline bool uaddl_overflow(unsigned long a, unsigned long b,
                                   unsigned long *res)
 {
-#if defined(__GNUC__) || defined(__clang__)
+#if VLC_GCC_VERSION(5,0) || defined(__clang__)
      return __builtin_uaddl_overflow(a, b, res);
 #else
      *res = a + b;
@@ -676,7 +675,7 @@ static inline bool uaddl_overflow(unsigned long a, unsigned long b,
 static inline bool uaddll_overflow(unsigned long long a, unsigned long long b,
                                    unsigned long long *res)
 {
-#if defined(__GNUC__) || defined(__clang__)
+#if VLC_GCC_VERSION(5,0) || defined(__clang__)
      return __builtin_uaddll_overflow(a, b, res);
 #else
      *res = a + b;
@@ -709,9 +708,13 @@ static inline bool add_overflow(unsigned long long a, unsigned long long b,
 }
 #endif
 
+#if !(VLC_GCC_VERSION(5,0) || defined(__clang__))
+# include <limits.h>
+#endif
+
 static inline bool umul_overflow(unsigned a, unsigned b, unsigned *res)
 {
-#if defined(__GNUC__) || defined(__clang__)
+#if VLC_GCC_VERSION(5,0) || defined(__clang__)
      return __builtin_umul_overflow(a, b, res);
 #else
      *res = a * b;
@@ -722,7 +725,7 @@ static inline bool umul_overflow(unsigned a, unsigned b, unsigned *res)
 static inline bool umull_overflow(unsigned long a, unsigned long b,
                                   unsigned long *res)
 {
-#if defined(__GNUC__) || defined(__clang__)
+#if VLC_GCC_VERSION(5,0) || defined(__clang__)
      return __builtin_umull_overflow(a, b, res);
 #else
      *res = a * b;
@@ -733,7 +736,7 @@ static inline bool umull_overflow(unsigned long a, unsigned long b,
 static inline bool umulll_overflow(unsigned long long a, unsigned long long b,
                                    unsigned long long *res)
 {
-#if defined(__GNUC__) || defined(__clang__)
+#if VLC_GCC_VERSION(5,0) || defined(__clang__)
      return __builtin_umulll_overflow(a, b, res);
 #else
      *res = a * b;



More information about the vlc-commits mailing list