From ecbad494d9f1e39b0e11fb58a38e868d2390c5c6 Mon Sep 17 00:00:00 2001 From: Yuri Kunde Schlesner Date: Tue, 25 Aug 2015 05:44:59 -0300 Subject: [PATCH] Shader Debugger: Initialize input_vertex to prevent crashes If the first type of breakpoint to be hit wasn't "Vertex Loaded", the input_vertex would contain garbage, which would be passed to the shader interpreter and ocasionally cause crashes. --- src/citra_qt/debugger/graphics_vertex_shader.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/citra_qt/debugger/graphics_vertex_shader.cpp b/src/citra_qt/debugger/graphics_vertex_shader.cpp index eaa749f300..e5af760741 100644 --- a/src/citra_qt/debugger/graphics_vertex_shader.cpp +++ b/src/citra_qt/debugger/graphics_vertex_shader.cpp @@ -301,6 +301,13 @@ GraphicsVertexShaderWidget::GraphicsVertexShaderWidget(std::shared_ptr< Pica::De : BreakPointObserverDock(debug_context, "Pica Vertex Shader", parent) { setObjectName("PicaVertexShader"); + // Clear input vertex data so that it contains valid float values in case a debug shader + // execution happens before the first Vertex Loaded breakpoint. + // TODO: This makes a crash in the interpreter much less likely, but not impossible. The + // interpreter should guard against out-of-bounds accesses to ensure crashes in it aren't + // possible. + std::memset(&input_vertex, 0, sizeof(input_vertex)); + auto input_data_mapper = new QSignalMapper(this); // TODO: Support inputting data in hexadecimal raw format