Просмотр исходного кода

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.
Yuri Kunde Schlesner 11 лет назад
Родитель
Сommit
ecbad494d9
1 измененных файлов с 7 добавлено и 0 удалено
  1. 7 0
      src/citra_qt/debugger/graphics_vertex_shader.cpp

+ 7 - 0
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