isl_basic_set_opt: avoid invalid access on error path
[platform/upstream/isl.git] / isl_lp.c
index 1673b5b..28e317c 100644 (file)
--- a/isl_lp.c
+++ b/isl_lp.c
@@ -1,7 +1,7 @@
 /*
  * Copyright 2008-2009 Katholieke Universiteit Leuven
  *
- * Use of this software is governed by the GNU LGPLv2.1 license
+ * Use of this software is governed by the MIT license
  *
  * Written by Sven Verdoolaege, K.U.Leuven, Departement
  * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium
@@ -13,6 +13,7 @@
 #include "isl_lp_piplib.h"
 #include <isl/seq.h>
 #include "isl_tab.h"
+#include <isl_options_private.h>
 
 enum isl_lp_result isl_tab_solve_lp(struct isl_basic_map *bmap, int maximize,
                                      isl_int *f, isl_int denom, isl_int *opt,
@@ -27,7 +28,7 @@ enum isl_lp_result isl_tab_solve_lp(struct isl_basic_map *bmap, int maximize,
                isl_seq_neg(f, f, 1 + dim);
 
        bmap = isl_basic_map_gauss(bmap, NULL);
-       tab = isl_tab_from_basic_map(bmap);
+       tab = isl_tab_from_basic_map(bmap, 0);
        res = isl_tab_min(tab, f, denom, opt, opt_denom, 0);
        if (res == isl_lp_ok && sol) {
                *sol = isl_tab_get_sample_value(tab);
@@ -108,7 +109,7 @@ enum isl_lp_result isl_map_solve_lp(__isl_keep isl_map *map, int max,
                if (map->p[i]->n_div > max_div)
                        max_div = map->p[i]->n_div;
        if (max_div > 0) {
-               unsigned total = isl_dim_total(map->dim);
+               unsigned total = isl_space_dim(map->dim, isl_dim_all);
                v = isl_vec_alloc(map->ctx, 1 + total + max_div);
                if (!v)
                        return isl_lp_error;