mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-09-14 10:23:14 +08:00
Fix undefined behavior. When resizing a default-constructed SparseArray, we end up calling memcpy(ptr, 0, 0), which is technically UB and gets caught by static analysis.
This commit is contained in:
parent
4cc0c961f3
commit
368ea23406
@ -229,8 +229,10 @@ class CompressedStorage
|
|||||||
internal::scoped_array<Scalar> newValues(size);
|
internal::scoped_array<Scalar> newValues(size);
|
||||||
internal::scoped_array<StorageIndex> newIndices(size);
|
internal::scoped_array<StorageIndex> newIndices(size);
|
||||||
Index copySize = (std::min)(size, m_size);
|
Index copySize = (std::min)(size, m_size);
|
||||||
internal::smart_copy(m_values, m_values+copySize, newValues.ptr());
|
if (copySize>0) {
|
||||||
internal::smart_copy(m_indices, m_indices+copySize, newIndices.ptr());
|
internal::smart_copy(m_values, m_values+copySize, newValues.ptr());
|
||||||
|
internal::smart_copy(m_indices, m_indices+copySize, newIndices.ptr());
|
||||||
|
}
|
||||||
std::swap(m_values,newValues.ptr());
|
std::swap(m_values,newValues.ptr());
|
||||||
std::swap(m_indices,newIndices.ptr());
|
std::swap(m_indices,newIndices.ptr());
|
||||||
m_allocatedSize = size;
|
m_allocatedSize = size;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user