aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLynne <dev@lynne.ee>2022-01-29 01:02:37 +0100
committerLynne <dev@lynne.ee>2022-01-29 01:02:37 +0100
commit7e35e0224cb1e82bfefdedeff9db946a05363c83 (patch)
tree3d3981371be541fcf44c4df7e3bc47ce6c786269
parent265731f201f1dde0dfe2448ad21d8256c17a33e2 (diff)
downloadffmpeg-7e35e0224cb1e82bfefdedeff9db946a05363c83.tar.gz
lavu/tx: do not unconditionally free subcontexts if initialization fails
If a codelet initializes 2 subtransforms, and the second one fails, the failure would free all subcontexts. Instead, if there are subcontexts still left, don't free the array. If all initializations fail, the init() function will return, and reset_ctx() from the previous step will clean up all contained subtransforms.
-rw-r--r--libavutil/tx.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavutil/tx.c b/libavutil/tx.c
index a90ccffcc4..573f4863d1 100644
--- a/libavutil/tx.c
+++ b/libavutil/tx.c
@@ -606,7 +606,8 @@ av_cold int ff_tx_init_subtx(AVTXContext *s, enum AVTXType type,
break;
}
- av_freep(&s->sub);
+ if (!s->nb_sub)
+ av_freep(&s->sub);
end:
av_free(cd_matches);