Bug fix for long array
authorHamed Gorjiara <hgorjiar@uci.edu>
Tue, 26 Mar 2019 18:38:40 +0000 (11:38 -0700)
committerHamed Gorjiara <hgorjiar@uci.edu>
Tue, 26 Mar 2019 18:38:40 +0000 (11:38 -0700)
src/Backend/constraint.cc [changed mode: 0644->0755]
src/Backend/satencoder.cc [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 45f2c5f..d69e194
@@ -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) {
old mode 100644 (file)
new mode 100755 (executable)