It didn't work correctly when re-adding removed clauses: variable
elimination, conglomeration, and part-handling all dumped data, but they
shouldn't have been
git-svn-id: https://stp-fast-prover.svn.sourceforge.net/svnroot/stp-fast-prover/trunk/stp@693
e59a4935-1847-0410-ae03-
e826735625c1
for(Lit *l = c.getData(), *end2 = c.getDataEnd(); l != end2 ; l++)
*l = l->unsign();
+ FILE* backup_libraryCNFfile = solver.libraryCNFFile;
+ solver.libraryCNFFile = NULL;
if (!solver.addXorClause(c, c.xor_clause_inverted(), c.getGroup())) {
for (;it != end; it++)
free(&c);
calcAtFinish.clear();
return false;
}
+ solver.libraryCNFFile = backup_libraryCNFfile;
free(&c);
}
calcAtFinish.clear();
void PartHandler::readdRemovedClauses()
{
+ FILE* backup_libraryCNFfile = solver.libraryCNFFile;
+ solver.libraryCNFFile = NULL;
for (Clause **it = clausesRemoved.getData(), **end = clausesRemoved.getDataEnd(); it != end; it++) {
solver.addClause(**it, (*it)->getGroup());
assert(solver.ok);
assert(solver.ok);
}
xorClausesRemoved.clear();
+ solver.libraryCNFFile = backup_libraryCNFfile;
}
}; //NAMESPACE MINISAT
solver.setDecisionVar(var, true);
var_elimed[var] = false;
numElimed--;
+ FILE* backup_libraryCNFfile = solver.libraryCNFFile;
+ solver.libraryCNFFile = NULL;
for (vector<vector<Lit> >::iterator it2 = it->second.begin(), end2 = it->second.end(); it2 != end2; it2++) {
tmp.clear();
tmp.growTo(it2->size());
- memcpy(tmp.getData(), &((*it2)[0]), sizeof(Lit)*it2->size()); //*it2 is never empty
+ std::copy(it2->begin(), it2->end(), tmp.getData());
solver.addClause(tmp);
}
+ solver.libraryCNFFile = backup_libraryCNFfile;
elimedOutVar.erase(it);
if (!solver.ok) return false;
CryptoMiniSat
-GIT revision: cebb0caeb2928eb96e114864c580c341e904245d
+GIT revision: 8dccdf7df73e761aba7a8c9a0251e2327a9bd97c