diff options
author | Gael Guennebaud <g.gael@free.fr> | 2018-10-07 09:23:15 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2018-10-07 09:23:15 +0200 |
commit | 409132bb817f2a3f77e0a0ecb9baeb73af386984 (patch) | |
tree | 92936966baf08918d7545993b5e8470a8dd09485 /Eigen/src/Core/util/Memory.h | |
parent | c6a1ab4036afff63fd92a15f15490a38c06bab4c (diff) |
Workaround gcc bug making it trigger an invalid warning
Diffstat (limited to 'Eigen/src/Core/util/Memory.h')
-rw-r--r-- | Eigen/src/Core/util/Memory.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h index c624556c5..46a0dbc69 100644 --- a/Eigen/src/Core/util/Memory.h +++ b/Eigen/src/Core/util/Memory.h @@ -887,7 +887,15 @@ public: pointer allocate(size_type num, const void* /*hint*/ = 0) { internal::check_size_for_overflow<T>(num); - return static_cast<pointer>( internal::aligned_malloc(num * sizeof(T)) ); + size_type size = num * sizeof(T); +#if EIGEN_COMP_GNUC_STRICT && EIGEN_GNUC_AT_LEAST(7,0) + // workaround gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87544 + // It triggered eigen/Eigen/src/Core/util/Memory.h:189:12: warning: argument 1 value '18446744073709551612' exceeds maximum object size 9223372036854775807 + if(size>=std::size_t((std::numeric_limits<std::ptrdiff_t>::max)())) + return 0; + else +#endif + return static_cast<pointer>( internal::aligned_malloc(size) ); } void deallocate(pointer p, size_type /*num*/) |