isl_tab_pip.c: sol_map_add: fix double free on error path
[platform/upstream/isl.git] / isl_tab_pip.c
index 073380e..78f71f2 100644 (file)
@@ -650,10 +650,10 @@ static void sol_map_add(struct isl_sol_map *sol,
        bmap = isl_basic_map_finalize(bmap);
        sol->map = isl_map_grow(sol->map, 1);
        sol->map = isl_map_add_basic_map(sol->map, bmap);
-       if (!sol->map)
-               goto error;
        isl_basic_set_free(dom);
        isl_mat_free(M);
+       if (!sol->map)
+               sol->sol.error = 1;
        return;
 error:
        isl_basic_set_free(dom);
@@ -4677,6 +4677,14 @@ int isl_basic_map_foreach_lexmax(__isl_keep isl_basic_map *bmap,
        return isl_basic_map_foreach_lexopt(bmap, 1, fn, user);
 }
 
+int isl_basic_set_foreach_lexmax(__isl_keep isl_basic_set *bset,
+       int (*fn)(__isl_take isl_basic_set *dom, __isl_take isl_aff_list *list,
+                 void *user),
+       void *user)
+{
+       return isl_basic_map_foreach_lexmax(bset, fn, user);
+}
+
 /* Check if the given sequence of len variables starting at pos
  * represents a trivial (i.e., zero) solution.
  * The variables are assumed to be non-negative and to come in pairs,