diff --git a/libavutil/tx_template.c b/libavutil/tx_template.c index 5e7159bd87..2c9682ffb7 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; }