From 06c1f75f21d04ebd8ed291a74136f9c8f043664f Mon Sep 17 00:00:00 2001 From: ReinUsesLisp Date: Wed, 3 Apr 2019 16:01:53 -0300 Subject: gl_shader_decompiler: Return early when an operation is invalid --- src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 11d1169f0..7ceea2ff1 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp @@ -426,9 +426,14 @@ private: std::string Visit(Node node) { if (const auto operation = std::get_if(node)) { const auto operation_index = static_cast(operation->GetCode()); + if (operation_index >= operation_decompilers.size()) { + UNREACHABLE_MSG("Out of bounds operation: {}", operation_index); + return {}; + } const auto decompiler = operation_decompilers[operation_index]; if (decompiler == nullptr) { - UNREACHABLE_MSG("Operation decompiler {} not defined", operation_index); + UNREACHABLE_MSG("Undefined operation: {}", operation_index); + return {}; } return (this->*decompiler)(*operation); -- cgit v1.2.3