mods
authorbdemsky <bdemsky@uci.edu>
Sat, 1 Jul 2017 07:17:10 +0000 (00:17 -0700)
committerbdemsky <bdemsky@uci.edu>
Sat, 1 Jul 2017 07:17:10 +0000 (00:17 -0700)
src/Backend/nodeedge.c

index e5c50b0bb20170c72be6f7c0e9b39dcf4fcc913b..533a9f1236c44e71d463c9289938281563b32a58 100644 (file)
@@ -13,6 +13,12 @@ CNF * createCNF() {
 }
 
 void deleteCNF(CNF * cnf) {
+       for(uint i=0;i<cnf->capacity;i++) {
+               Node *n=cnf->node_array[i];
+               if (n!=NULL)
+                       ourfree(n);
+       }
+       ourfree(cnf->node_array);
        ourfree(cnf);
 }
 
@@ -116,7 +122,14 @@ Edge constraintAND(CNF * cnf, uint numEdges, Edge * edges) {
 }
 
 Edge constraintAND2(CNF * cnf, Edge left, Edge right) {
-       Edge edges[2]={left, right};
+       Edge edges[2];
+       if ((uintptr_t)left.node_ptr<(uintptr_t)right.node_ptr) {
+               edges[0]=left;
+               edges[1]=right;
+       } else {
+               edges[0]=right;
+               edges[1]=left;
+       }
        return createNode(cnf, NodeType_AND, 2, edges);
 }
 
@@ -129,7 +142,14 @@ Edge constraintIMPLIES(CNF * cnf, Edge left, Edge right) {
 }
 
 Edge constraintIFF(CNF * cnf, Edge left, Edge right) {
-       Edge edges[]={left, right};
+       Edge edges[2];
+       if ((uintptr_t)left.node_ptr < (uintptr_t) right.node_ptr) {
+               edges[0]=left;
+               edges[1]=right;
+       } else {
+               edges[0]=right;
+               edges[1]=left;
+       }
        return createNode(cnf, NodeType_IFF, 2, edges);
 }