Commit 8f9569cf authored by Michael Niedermayer's avatar Michael Niedermayer

avfilter/vf_pullup: Factor free_field_queue() out

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent b02d8793
...@@ -126,6 +126,22 @@ static int alloc_metrics(PullupContext *s, PullupField *f) ...@@ -126,6 +126,22 @@ static int alloc_metrics(PullupContext *s, PullupField *f)
return 0; return 0;
} }
static void free_field_queue(PullupField *head, PullupField **last)
{
PullupField *f = head;
while (f) {
av_free(f->diffs);
av_free(f->combs);
av_free(f->vars);
if (f == *last) {
av_freep(last);
break;
}
f = f->next;
av_freep(&f->prev);
};
}
static PullupField *make_field_queue(PullupContext *s, int len) static PullupField *make_field_queue(PullupContext *s, int len)
{ {
PullupField *head, *f; PullupField *head, *f;
...@@ -714,21 +730,9 @@ end: ...@@ -714,21 +730,9 @@ end:
static av_cold void uninit(AVFilterContext *ctx) static av_cold void uninit(AVFilterContext *ctx)
{ {
PullupContext *s = ctx->priv; PullupContext *s = ctx->priv;
PullupField *f;
int i; int i;
f = s->head; free_field_queue(s->head, &s->last);
while (f) {
av_free(f->diffs);
av_free(f->combs);
av_free(f->vars);
if (f == s->last) {
av_freep(&s->last);
break;
}
f = f->next;
av_freep(&f->prev);
};
for (i = 0; i < FF_ARRAY_ELEMS(s->buffers); i++) { for (i = 0; i < FF_ARRAY_ELEMS(s->buffers); i++) {
av_freep(&s->buffers[i].planes[0]); av_freep(&s->buffers[i].planes[0]);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment