From 8f9569cfacb9f595e1f5a7b45f2d31d9499369fa Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Fri, 13 Dec 2013 15:13:01 +0100 Subject: [PATCH] avfilter/vf_pullup: Factor free_field_queue() out Signed-off-by: Michael Niedermayer --- libavfilter/vf_pullup.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/libavfilter/vf_pullup.c b/libavfilter/vf_pullup.c index 69e1e91719..d0b910fe1f 100644 --- a/libavfilter/vf_pullup.c +++ b/libavfilter/vf_pullup.c @@ -126,6 +126,22 @@ static int alloc_metrics(PullupContext *s, PullupField *f) 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) { PullupField *head, *f; @@ -714,21 +730,9 @@ end: static av_cold void uninit(AVFilterContext *ctx) { PullupContext *s = ctx->priv; - PullupField *f; int i; - f = s->head; - 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); - }; + free_field_queue(s->head, &s->last); for (i = 0; i < FF_ARRAY_ELEMS(s->buffers); i++) { av_freep(&s->buffers[i].planes[0]);