summaryrefslogtreecommitdiff
path: root/src/video_core
diff options
context:
space:
mode:
authorGravatar bunnei2019-04-05 23:36:18 -0400
committerGravatar GitHub2019-04-05 23:36:18 -0400
commit520e4e5d4b9c332ecee03ce15ca85312b6e43a99 (patch)
tree3b9f68892843d9884a2bdbb82511583e0be1607e /src/video_core
parentMerge pull request #2343 from lioncash/todo (diff)
parentgl_shader_decompiler: Return early when an operation is invalid (diff)
downloadyuzu-520e4e5d4b9c332ecee03ce15ca85312b6e43a99.tar.gz
yuzu-520e4e5d4b9c332ecee03ce15ca85312b6e43a99.tar.xz
yuzu-520e4e5d4b9c332ecee03ce15ca85312b6e43a99.zip
Merge pull request #2327 from ReinUsesLisp/crash-safe-visit
gl_shader_decompiler: Return early when an operation is invalid
Diffstat (limited to 'src/video_core')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 3222028d5..a1a51f226 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:
426 std::string Visit(Node node) { 426 std::string Visit(Node node) {
427 if (const auto operation = std::get_if<OperationNode>(node)) { 427 if (const auto operation = std::get_if<OperationNode>(node)) {
428 const auto operation_index = static_cast<std::size_t>(operation->GetCode()); 428 const auto operation_index = static_cast<std::size_t>(operation->GetCode());
429 if (operation_index >= operation_decompilers.size()) {
430 UNREACHABLE_MSG("Out of bounds operation: {}", operation_index);
431 return {};
432 }
429 const auto decompiler = operation_decompilers[operation_index]; 433 const auto decompiler = operation_decompilers[operation_index];
430 if (decompiler == nullptr) { 434 if (decompiler == nullptr) {
431 UNREACHABLE_MSG("Operation decompiler {} not defined", operation_index); 435 UNREACHABLE_MSG("Undefined operation: {}", operation_index);
436 return {};
432 } 437 }
433 return (this->*decompiler)(*operation); 438 return (this->*decompiler)(*operation);
434 439