From 7e7baf8ab86c4ae715f12d2c0babf831a5b18c39 Mon Sep 17 00:00:00 2001
From: Lynne <dev@lynne.ee>
Date: Thu, 22 Sep 2022 08:25:52 +0200
Subject: [PATCH] lavu/tx: do not steal lookup tables of subcontexts in the
 iMDCT

As it happens, some still need their contexts.
---
 libavutil/tx_template.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/libavutil/tx_template.c b/libavutil/tx_template.c
index 5e7159bd87b..2c9682ffb70 100644
--- a/libavutil/tx_template.c
+++ b/libavutil/tx_template.c
@@ -965,15 +965,14 @@ static av_cold int TX_NAME(ff_tx_mdct_init)(AVTXContext *s,
             return ret;
     }
 
-    /* If we need to preshuffle just steal the map from the subcontext */
+    s->map = av_malloc((len >> 1)*sizeof(*s->map));
+    if (!s->map)
+        return AVERROR(ENOMEM);
+
+    /* If we need to preshuffle copy the map from the subcontext */
     if (s->sub[0].flags & FF_TX_PRESHUFFLE) {
-        s->map = s->sub[0].map;
-        s->sub[0].map = NULL;
+        memcpy(s->map, s->sub->map, (len >> 1)*sizeof(*s->map));
     } else {
-        s->map = av_malloc((len >> 1)*sizeof(*s->map));
-        if (!s->map)
-            return AVERROR(ENOMEM);
-
         for (int i = 0; i < len >> 1; i++)
             s->map[i] = i;
     }
-- 
GitLab