From fd490e9929f5ebed267316d46836b05ccc38e89b Mon Sep 17 00:00:00 2001 From: Silent Date: Fri, 9 Oct 2020 22:15:15 +0200 Subject: [PATCH] Actually zero g_InlineVertexBuffer_Table[0] Operator= invoked default constructors where available, and a default constructor for D3DXVECTOR4 does nothing. memset/memcpy zeroes and copies the entire structure for real. --- src/core/hle/D3D8/Direct3D9/Direct3D9.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp index 4e703ae44..bd3bf553e 100644 --- a/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp +++ b/src/core/hle/D3D8/Direct3D9/Direct3D9.cpp @@ -4576,7 +4576,7 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetVertexData4f) // Is this the initial call after D3DDevice_Begin() ? if (g_InlineVertexBuffer_FVF == 0) { // Set first vertex to zero (preventing leaks from prior Begin/End calls) - g_InlineVertexBuffer_Table[0] = {}; + memset(&g_InlineVertexBuffer_Table[0], 0, sizeof(g_InlineVertexBuffer_Table[0])); // Handle persistent vertex attribute flags, by resetting non-persistent colors // to their default value (and leaving the persistent colors alone - see the @@ -4649,7 +4649,7 @@ xbox::void_xt WINAPI xbox::EMUPATCH(D3DDevice_SetVertexData4f) // Start a new vertex g_InlineVertexBuffer_TableOffset++; // Copy all attributes of the previous vertex (if any) to the new vertex - g_InlineVertexBuffer_Table[g_InlineVertexBuffer_TableOffset] = g_InlineVertexBuffer_Table[o]; + memcpy(&g_InlineVertexBuffer_Table[g_InlineVertexBuffer_TableOffset], &g_InlineVertexBuffer_Table[o], sizeof(g_InlineVertexBuffer_Table[o])); break; }