Browse Source
Merge pull request #2327 from ReinUsesLisp/crash-safe-visit
gl_shader_decompiler: Return early when an operation is invalid
pull/15/merge
bunnei
7 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
6 additions and
1 deletions
-
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<OperationNode>(node)) { |
|
|
|
const auto operation_index = static_cast<std::size_t>(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); |
|
|
|
|
|
|
|
|