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

Shader Decompiler: Fix dangerous behavior of invalid iterator insertion.

Fernando Sahmkow 4 лет назад
Родитель
Сommit
a283eda320
1 измененных файлов с 3 добавлено и 3 удалено
  1. 3 3
      src/shader_recompiler/frontend/maxwell/structured_control_flow.cpp

+ 3 - 3
src/shader_recompiler/frontend/maxwell/structured_control_flow.cpp

@@ -964,9 +964,9 @@ private:
         demote_endif_node.type = Type::EndIf;
         demote_endif_node.type = Type::EndIf;
         demote_endif_node.data.end_if.merge = return_block_it->data.block;
         demote_endif_node.data.end_if.merge = return_block_it->data.block;
 
 
-        asl.insert(return_block_it, demote_endif_node);
-        asl.insert(return_block_it, demote_node);
-        asl.insert(return_block_it, demote_if_node);
+        const auto next_it_1 = asl.insert(return_block_it, demote_endif_node);
+        const auto next_it_2 = asl.insert(next_it_1, demote_node);
+        asl.insert(next_it_2, demote_if_node);
     }
     }
 
 
     ObjectPool<Statement>& stmt_pool;
     ObjectPool<Statement>& stmt_pool;