From 30ce9d72ddadca9ef9d4f68e797e9d236176c14b Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Tue, 17 Jun 2025 03:04:11 +0200 Subject: [PATCH] Fix UB in software renderer One cannot access elements of the vector that don't exist. `reserve` allocates memory, but doesn't add elements. `D3DRMVERTEX& dst = m_transformedVerts[i];` is UB and crashes on Windows debug build --- miniwin/src/d3drm/backends/software/renderer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/miniwin/src/d3drm/backends/software/renderer.cpp b/miniwin/src/d3drm/backends/software/renderer.cpp index 6b5df06b..9ecc9919 100644 --- a/miniwin/src/d3drm/backends/software/renderer.cpp +++ b/miniwin/src/d3drm/backends/software/renderer.cpp @@ -710,7 +710,7 @@ void Direct3DRMSoftwareRenderer::SubmitDraw( // Pre-transform all vertex positions and normals m_transformedVerts.clear(); - m_transformedVerts.reserve(mesh.vertices.size()); + m_transformedVerts.resize(mesh.vertices.size()); for (size_t i = 0; i < mesh.vertices.size(); ++i) { const D3DRMVERTEX& src = mesh.vertices[i]; D3DRMVERTEX& dst = m_transformedVerts[i];