[proof-new] Fix dangling pointer in SAT proof generation (#5963)
authorHaniel Barbosa <hanielbbarbosa@gmail.com>
Tue, 23 Feb 2021 17:31:38 +0000 (14:31 -0300)
committerGitHub <noreply@github.com>
Tue, 23 Feb 2021 17:31:38 +0000 (14:31 -0300)
commit1e58294a927f8c3067ea0feaad0d891f82f42ebe
tree89c47c4849f1abe189bbf68cdbbf109709bc585b
parentb4c832ab30dafe048334c6e47642aa12619357ef
[proof-new] Fix dangling pointer in SAT proof generation (#5963)

When a clause is being explained, the negation of each of its literals, other than the one it propagates, needs to be explained. This process may lead to the creation of new clauses in the SAT solver (because if a literal being explained was propagated and an explanation was not yet given, it will then be computed and added). This may lead to changes in the memory where clauses are, which may break the reference to the original clause being explained. To avoid this issue we store the literals in the reason before we start explaining their negations. We then iterate over them rather than over the clause, as before.
src/prop/sat_proof_manager.cpp