3
0
فهرست منبع

Adding asserts per code review feedback

Signed-off-by: gadams3 <[email protected]>
gadams3 2 سال پیش
والد
کامیت
ae93927fdb
1فایلهای تغییر یافته به همراه14 افزوده شده و 1 حذف شده
  1. 14 1
      Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/MeshComponentController.cpp

+ 14 - 1
Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/MeshComponentController.cpp

@@ -765,11 +765,24 @@ namespace AZ
                 AzFramework::VisibleGeometry visibleGeometry;
                 AzFramework::VisibleGeometry visibleGeometry;
                 visibleGeometry.m_transform = AZ::Matrix4x4::CreateFromTransform(m_transformInterface->GetWorldTM());
                 visibleGeometry.m_transform = AZ::Matrix4x4::CreateFromTransform(m_transformInterface->GetWorldTM());
 
 
-                // This resize and copy assumes the stride between elements is 0.
+                // Reserve space for indices and copy data, assuming stride between elements is 0.
                 visibleGeometry.m_indices.resize_no_construct(indexBufferViewDesc.m_elementCount);
                 visibleGeometry.m_indices.resize_no_construct(indexBufferViewDesc.m_elementCount);
+
+                AZ_Assert(
+                    (sizeof(visibleGeometry.m_indices[0]) * visibleGeometry.m_indices.size()) >=
+                    (indexBufferViewDesc.m_elementSize * indexBufferViewDesc.m_elementCount),
+                    "Index buffer size exceeds memory allocated for visible geometry indices.");
+
                 memcpy(&visibleGeometry.m_indices[0], indexPtr, indexBufferViewDesc.m_elementCount * indexBufferViewDesc.m_elementSize);
                 memcpy(&visibleGeometry.m_indices[0], indexPtr, indexBufferViewDesc.m_elementCount * indexBufferViewDesc.m_elementSize);
 
 
+                // Reserve space for vertices and copy data, assuming stride between elements is 0.
                 visibleGeometry.m_vertices.resize_no_construct(positionBufferViewDesc.m_elementCount * ElementsPerVertex);
                 visibleGeometry.m_vertices.resize_no_construct(positionBufferViewDesc.m_elementCount * ElementsPerVertex);
+
+                AZ_Assert(
+                    (sizeof(visibleGeometry.m_vertices[0]) * visibleGeometry.m_vertices.size()) >=
+                    (positionBufferViewDesc.m_elementSize * positionBufferViewDesc.m_elementCount),
+                    "Position buffer size exceeds memory allocated for visible geometry vertices.");
+
                 memcpy(&visibleGeometry.m_vertices[0], positionPtr, positionBufferViewDesc.m_elementCount * positionBufferViewDesc.m_elementSize);
                 memcpy(&visibleGeometry.m_vertices[0], positionPtr, positionBufferViewDesc.m_elementCount * positionBufferViewDesc.m_elementSize);
 
 
                 geometryContainer.emplace_back(AZStd::move(visibleGeometry));
                 geometryContainer.emplace_back(AZStd::move(visibleGeometry));