From 1ff3b45a1eae5f4fd3b7f69dfdb32b369397b484 Mon Sep 17 00:00:00 2001 From: vladislavbelov Date: Sun, 27 Feb 2022 20:21:07 +0000 Subject: [PATCH] Adds more checks for vertex and index buffer creations. This was SVN commit r26502. --- source/renderer/ShadowMap.cpp | 1 + source/renderer/TexturedLineRData.cpp | 6 +++++- source/renderer/VertexBuffer.cpp | 1 + source/renderer/VertexBufferManager.cpp | 3 +++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/source/renderer/ShadowMap.cpp b/source/renderer/ShadowMap.cpp index fe25cf5281..97119a875d 100644 --- a/source/renderer/ShadowMap.cpp +++ b/source/renderer/ShadowMap.cpp @@ -575,6 +575,7 @@ void ShadowMap::BeginRender() { PROFILE("bind framebuffer"); + ENSURE(m->Framebuffer); deviceCommandContext->SetFramebuffer(m->Framebuffer.get()); } diff --git a/source/renderer/TexturedLineRData.cpp b/source/renderer/TexturedLineRData.cpp index 5899ddf513..274fd2516e 100644 --- a/source/renderer/TexturedLineRData.cpp +++ b/source/renderer/TexturedLineRData.cpp @@ -304,7 +304,11 @@ void CTexturedLineRData::Update(const SOverlayTexturedLine& line) indices.insert(indices.end(), capIndices.begin(), capIndices.end()); } - ENSURE(indices.size() % 3 == 0); // GL_TRIANGLES indices, so must be multiple of 3 + if (vertices.empty() || indices.empty()) + return; + + // Indices for triangles, so must be multiple of 3. + ENSURE(indices.size() % 3 == 0); m_BoundingBox = CBoundingBoxAligned(); for (const SVertex& vertex : vertices) diff --git a/source/renderer/VertexBuffer.cpp b/source/renderer/VertexBuffer.cpp index 479fccc651..8744d71cb8 100644 --- a/source/renderer/VertexBuffer.cpp +++ b/source/renderer/VertexBuffer.cpp @@ -216,6 +216,7 @@ void CVertexBuffer::UpdateChunkVertices(VBChunk* chunk, void* data) } else { + ENSURE(data); g_Renderer.GetDeviceCommandContext()->UploadBufferRegion( m_Buffer.get(), data, chunk->m_Index * m_VertexSize, chunk->m_Count * m_VertexSize); } diff --git a/source/renderer/VertexBufferManager.cpp b/source/renderer/VertexBufferManager.cpp index 0719a5cacc..f2f3b6bae6 100644 --- a/source/renderer/VertexBufferManager.cpp +++ b/source/renderer/VertexBufferManager.cpp @@ -79,6 +79,9 @@ CVertexBufferManager::Handle CVertexBufferManager::AllocateChunk( const Renderer::Backend::GL::CBuffer::Type type, const bool dynamic, void* backingStore, Group group) { + ENSURE(vertexSize > 0); + ENSURE(numberOfVertices > 0); + CVertexBuffer::VBChunk* result = nullptr; if (CVertexBuffer::UseStreaming(dynamic))