소스 검색

Shader Decompiler: Fix dangerous behavior of invalid iterator insertion.

Fernando Sahmkow 4 년 전
부모
커밋
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.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;