diff --git a/Eigen/src/Core/Fill.h b/Eigen/src/Core/Fill.h index 048b51d98..e7ddf7f1a 100644 --- a/Eigen/src/Core/Fill.h +++ b/Eigen/src/Core/Fill.h @@ -80,11 +80,14 @@ struct eigen_zero_impl { static constexpr size_t max_bytes = (std::numeric_limits::max)(); static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void run(Xpr& dst) { const size_t num_bytes = dst.size() * sizeof(Scalar); + if (num_bytes == 0) return; + void* dst_ptr = static_cast(dst.data()); #ifndef EIGEN_NO_DEBUG if (num_bytes > max_bytes) throw_std_bad_alloc(); + eigen_assert((dst_ptr != nullptr) && "null pointer dereference error!"); #endif EIGEN_USING_STD(memset); - memset(dst.data(), 0, num_bytes); + memset(dst_ptr, 0, num_bytes); } };