From dd394251eb1578f17507f5da84791113e1e9cef7 Mon Sep 17 00:00:00 2001 From: Hamed Gorjiara Date: Tue, 26 Mar 2019 11:38:40 -0700 Subject: [PATCH 1/1] Bug fix for long array --- src/Backend/constraint.cc | 21 ++++++++++++++++----- src/Backend/satencoder.cc | 0 2 files changed, 16 insertions(+), 5 deletions(-) mode change 100644 => 100755 src/Backend/constraint.cc mode change 100644 => 100755 src/Backend/satencoder.cc diff --git a/src/Backend/constraint.cc b/src/Backend/constraint.cc old mode 100644 new mode 100755 index 45f2c5f..d69e194 --- a/src/Backend/constraint.cc +++ b/src/Backend/constraint.cc @@ -192,13 +192,24 @@ Edge createNode(NodeType type, uint numEdges, Edge *edges) { } Edge constraintOR(CNF *cnf, uint numEdges, Edge *edges) { - Edge edgearray[numEdges]; + if (numEdges < 200000) { + Edge edgearray[numEdges]; - for (uint i = 0; i < numEdges; i++) { - edgearray[i] = constraintNegate(edges[i]); + for (uint i = 0; i < numEdges; i++) { + edgearray[i] = constraintNegate(edges[i]); + } + Edge eand = constraintAND(cnf, numEdges, edgearray); + return constraintNegate(eand); + } else { + Edge * edgearray=(Edge *)ourmalloc(numEdges*sizeof(Edge)); + + for (uint i = 0; i < numEdges; i++) { + edgearray[i] = constraintNegate(edges[i]); + } + Edge eand = constraintAND(cnf, numEdges, edgearray); + ourfree(edgearray); + return constraintNegate(eand); } - Edge eand = constraintAND(cnf, numEdges, edgearray); - return constraintNegate(eand); } Edge constraintOR2(CNF *cnf, Edge left, Edge right) { diff --git a/src/Backend/satencoder.cc b/src/Backend/satencoder.cc old mode 100644 new mode 100755 -- 2.34.1