isl_tab_track_bmap: make sure we have a unique copy of the basic map
[platform/upstream/isl.git] / isl_tab.c
index 220f0b0..8cb307e 100644 (file)
--- a/isl_tab.c
+++ b/isl_tab.c
@@ -3231,12 +3231,13 @@ error:
 
 int isl_tab_track_bmap(struct isl_tab *tab, __isl_take isl_basic_map *bmap)
 {
+       bmap = isl_basic_map_cow(bmap);
        if (!tab || !bmap)
                goto error;
 
-       isl_assert(tab->mat->ctx, tab->n_eq == bmap->n_eq, return -1);
+       isl_assert(tab->mat->ctx, tab->n_eq == bmap->n_eq, goto error);
        isl_assert(tab->mat->ctx,
-                   tab->n_con == bmap->n_eq + bmap->n_ineq, return -1);
+                   tab->n_con == bmap->n_eq + bmap->n_ineq, goto error);
 
        tab->bmap = bmap;