Adding edge cases and fixing leaks
authorHamed <hamed.gorjiara@gmail.com>
Thu, 20 Jul 2017 22:39:01 +0000 (15:39 -0700)
committerHamed <hamed.gorjiara@gmail.com>
Thu, 20 Jul 2017 22:39:01 +0000 (15:39 -0700)
src/Backend/satfuncopencoder.c

index 67441d531ab2d7b477e822135fe901852412300d..5cbd86ca95f62d308afbd2f7df3d867957a1dc32 100644 (file)
@@ -75,8 +75,10 @@ Edge encodeEnumOperatorPredicateSATEncoder(SATEncoder * This, BooleanPredicate *
                        }
                }
        }
-       if(getSizeVectorEdge(clauses) == 0)
+       if(getSizeVectorEdge(clauses) == 0){
+               deleteVectorEdge(clauses);
                return E_False;
+       }
        Edge cor=constraintOR(This->cnf, getSizeVectorEdge(clauses), exposeArrayEdge(clauses));
        deleteVectorEdge(clauses);
        return generateNegation ? constraintNegate(cor) : cor;
@@ -184,7 +186,10 @@ void encodeOperatorElementFunctionSATEncoder(SATEncoder* This, ElementFunction*
                        }
                }
        }
-
+       if(getSizeVectorEdge(clauses) == 0){
+               deleteVectorEdge(clauses);
+               return E_False;
+       }
        Edge cor=constraintAND(This->cnf, getSizeVectorEdge(clauses), exposeArrayEdge(clauses));
        addConstraintCNF(This->cnf, cor);
        deleteVectorEdge(clauses);