summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Verdoolaege <skimo@kotnet.org>2013-06-05 09:50:16 +0200
committerSven Verdoolaege <skimo@kotnet.org>2013-06-05 09:50:16 +0200
commitde51a9bc4da5dd3f1f9f57c2362da6f9752c44e0 (patch)
tree6b79353031749488d12352283651d6dd8d1657c4
parent3fa832fd9d5096cf155fa91127058d69f176362d (diff)
downloadisl-de51a9bc4da5dd3f1f9f57c2362da6f9752c44e0.tar.gz
isl-de51a9bc4da5dd3f1f9f57c2362da6f9752c44e0.tar.bz2
isl-de51a9bc4da5dd3f1f9f57c2362da6f9752c44e0.zip
isl_basic_set_opt: avoid invalid access on error path
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
-rw-r--r--isl_ilp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/isl_ilp.c b/isl_ilp.c
index e6bc6242..24f6c57c 100644
--- a/isl_ilp.c
+++ b/isl_ilp.c
@@ -375,6 +375,7 @@ enum isl_lp_result isl_basic_set_opt(__isl_keep isl_basic_set *bset, int max,
isl_mat *bset_div = NULL;
isl_mat *div = NULL;
enum isl_lp_result res;
+ int bset_n_div;
if (!bset || !obj)
return isl_lp_error;
@@ -388,14 +389,15 @@ enum isl_lp_result isl_basic_set_opt(__isl_keep isl_basic_set *bset, int max,
"expecting integer affine expression",
return isl_lp_error);
- if (bset->n_div == 0 && obj->ls->div->n_row == 0)
+ bset_n_div = isl_basic_set_dim(bset, isl_dim_div);
+ if (bset_n_div == 0 && obj->ls->div->n_row == 0)
return basic_set_opt(bset, max, obj, opt);
bset = isl_basic_set_copy(bset);
obj = isl_aff_copy(obj);
bset_div = extract_divs(bset);
- exp1 = isl_alloc_array(ctx, int, bset_div->n_row);
+ exp1 = isl_alloc_array(ctx, int, bset_n_div);
exp2 = isl_alloc_array(ctx, int, obj->ls->div->n_row);
if (!bset_div || !exp1 || !exp2)
goto error;