Merge branch 'maint'
[platform/upstream/isl.git] / isl_polynomial.c
index 737eb15..173c213 100644 (file)
@@ -3866,7 +3866,7 @@ __isl_give isl_qpolynomial *isl_qpolynomial_morph_domain(
        int n_sub;
        isl_ctx *ctx;
        struct isl_upoly **subs;
-       isl_mat *mat;
+       isl_mat *mat, *diag;
 
        qp = isl_qpolynomial_cow(qp);
        if (!qp || !morph)
@@ -3896,8 +3896,10 @@ __isl_give isl_qpolynomial *isl_qpolynomial_morph_domain(
                isl_upoly_free(subs[i]);
        free(subs);
 
-       mat = isl_mat_diagonal(isl_mat_identity(ctx, 1), isl_mat_copy(morph->inv));
-       mat = isl_mat_diagonal(mat, isl_mat_identity(ctx, qp->div->n_row));
+       diag = isl_mat_diag(ctx, 1, morph->inv->row[0][0]);
+       mat = isl_mat_diagonal(diag, isl_mat_copy(morph->inv));
+       diag = isl_mat_diag(ctx, qp->div->n_row, morph->inv->row[0][0]);
+       mat = isl_mat_diagonal(mat, diag);
        qp->div = isl_mat_product(qp->div, mat);
        isl_space_free(qp->dim);
        qp->dim = isl_space_copy(morph->ran->dim);