From 76a5cc9179e76349c09eb3350a379b001ce02365 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Tue, 11 Jun 2013 23:02:09 +0200 Subject: [PATCH] isl_local_space_substitute_equalities: avoid writing to shared matrix We only called isl_local_space_cow on the local space itself, but the div matrix could still be shared with other local spaces. Signed-off-by: Sven Verdoolaege --- isl_local_space.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/isl_local_space.c b/isl_local_space.c index 6c4fb840..924b5ca1 100644 --- a/isl_local_space.c +++ b/isl_local_space.c @@ -718,7 +718,6 @@ __isl_give isl_local_space *isl_local_space_substitute_equalities( unsigned total; unsigned n_div; - ls = isl_local_space_cow(ls); if (!ls || !eq) goto error; @@ -736,6 +735,12 @@ __isl_give isl_local_space *isl_local_space_substitute_equalities( for (k = 0; k < ls->div->n_row; ++k) { if (isl_int_is_zero(ls->div->row[k][1 + j])) continue; + ls = isl_local_space_cow(ls); + if (!ls) + goto error; + ls->div = isl_mat_cow(ls->div); + if (!ls->div) + goto error; isl_seq_elim(ls->div->row[k] + 1, eq->eq[i], j, total, &ls->div->row[k][0]); normalize_div(ls, k); -- 2.11.4.GIT