summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2019-03-26 17:16:25 +0100
committerAnton Khirnov <anton@khirnov.net>2019-03-26 17:16:25 +0100
commit9dc3b1d7f2a3cb2a072b62370ea192b4ebad9a36 (patch)
treedce61ae26b345a2dadfcca8e1928e03c35f58c72
parentf65c33ac906c97b12ee7304f5625b9812fe10e09 (diff)
mg2d: do not leak the diff_coeffs interpolator
-rw-r--r--mg2d.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/mg2d.c b/mg2d.c
index 0ae651b..a1d6950 100644
--- a/mg2d.c
+++ b/mg2d.c
@@ -250,7 +250,7 @@ static int restrict_diff_coeffs(MG2DContext *ctx, enum GridTransferOperator op,
{
MG2DInternal *priv = ctx->priv;
GridTransferContext *tc;
- int ret;
+ int ret = 0;
tc = mg2di_gt_alloc(op);
if (!tc)
@@ -271,15 +271,18 @@ static int restrict_diff_coeffs(MG2DContext *ctx, enum GridTransferOperator op,
ret = mg2di_gt_init(tc);
if (ret < 0)
- return ret;
+ goto finish;
for (int i = 0; i < MG2D_DIFF_COEFF_NB; i++) {
ret = mg2di_gt_transfer(tc, dst->diff_coeffs[i], src->diff_coeffs[i]);
if (ret < 0)
- return ret;
+ goto finish;
}
- return 0;
+finish:
+ mg2di_gt_free(&tc);
+
+ return ret;
}
static double findmax(double *arr, size_t size[2], ptrdiff_t stride)