@@ -45,13 +45,14 @@ __isl_give isl_multi_pw_aff *FN(isl_multi_pw_aff_pullback,BASE)(
space = isl_space_join(FN(TYPE,get_space)(fn),
isl_multi_pw_aff_get_space(mpa));
- if (!space)
- goto error;
for (i = 0; i < n; ++i) {
- mpa->u.p[i] = FN(isl_pw_aff_pullback,BASE)(mpa->u.p[i],
- FN(TYPE,copy)(fn));
- if (!mpa->u.p[i])
+ isl_pw_aff *pa;
+
+ pa = isl_multi_pw_aff_take_at(mpa, i);
+ pa = FN(isl_pw_aff_pullback,BASE)(pa, FN(TYPE,copy)(fn));
+ mpa = isl_multi_pw_aff_restore_at(mpa, i, pa);
+ if (!mpa)
goto error;
}
if (isl_multi_pw_aff_has_explicit_domain(mpa)) {
@@ -62,8 +63,7 @@ __isl_give isl_multi_pw_aff *FN(isl_multi_pw_aff_pullback,BASE)(
}
FN(TYPE,free)(fn);
- isl_space_free(mpa->space);
- mpa->space = space;
+ isl_multi_pw_aff_restore_space(mpa, space);
return mpa;
error:
isl_space_free(space);