expr: Fix memory leak reported by valgrind.
authorWilliam Tu <u9012063@gmail.com>
Thu, 11 Feb 2016 17:45:08 +0000 (09:45 -0800)
committerRussell Bryant <russell@ovn.org>
Thu, 11 Feb 2016 20:29:26 +0000 (15:29 -0500)
Testcase 1728: ovn -- 5-term mixed expression normalization.
    expr_clone_cmp (expr.c:1259)
    expr_clone (expr.c:1284)
    expr_clone_andor (expr.c:1271)
    expr_clone (expr.c:1288)
    expr_normalize_and (expr.c:2137)
    test_tree_shape_exhaustively (test-ovn.c:926)

Signed-off-by: William Tu <u9012063@gmail.com>
Signed-off-by: Daniele Di Proietto <diproiettod@vmware.com>
Co-authored-by: Daniele Di Proietto <diproiettod@vmware.com>
Signed-off-by: Russell Bryant <russell@ovn.org>
ovn/lib/expr.c

index 316d557..0b65492 100644 (file)
@@ -1789,7 +1789,7 @@ crush_and_numeric(struct expr *expr, const struct expr_symbol *symbol)
                 expr_destroy(expr);
                 return new;
             }
-            free(new);
+            expr_destroy(new);
             break;
         }
     }
@@ -1827,7 +1827,7 @@ crush_and_numeric(struct expr *expr, const struct expr_symbol *symbol)
                                       &sub->cmp.value, &sub->cmp.mask)) {
                 list_push_back(&or->andor, &sub->node);
             } else {
-                free(sub);
+                expr_destroy(sub);
             }
         }
         free(disjuncts);
@@ -1974,7 +1974,7 @@ crush_or(struct expr *expr, const struct expr_symbol *symbol)
         if (compare_cmps_3way(a, b)) {
             list_push_back(&expr->andor, &b->node);
         } else {
-            free(b);
+            expr_destroy(b);
         }
     }
     free(subs);