isl_basic_set_opt: avoid invalid access on error path
[platform/upstream/isl.git] / isl_lp.c
index 932affc..28e317c 100644 (file)
--- a/isl_lp.c
+++ b/isl_lp.c
@@ -1,18 +1,19 @@
 /*
  * 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
  */
 
-#include <isl/ctx.h>
+#include <isl_ctx_private.h>
+#include <isl_map_private.h>
 #include <isl/lp.h>
 #include "isl_lp_piplib.h"
 #include <isl/seq.h>
 #include "isl_tab.h"
-#include "isl_map_private.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);
@@ -45,7 +46,7 @@ enum isl_lp_result isl_tab_solve_lp(struct isl_basic_map *bmap, int maximize,
 }
 
 /* Given a basic map "bmap" and an affine combination of the variables "f"
- * with denominator "denom", set *opt/*opt_denom to the minimal
+ * with denominator "denom", set *opt / *opt_denom to the minimal
  * (or maximal if "maximize" is true) value attained by f/d over "bmap",
  * assuming the basic map is not empty and the expression cannot attain
  * arbitrarily small (or large) values.
@@ -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;