summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavfilter/formats.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/libavfilter/formats.c b/libavfilter/formats.c
index d7d0322963..b3873d7acb 100644
--- a/libavfilter/formats.c
+++ b/libavfilter/formats.c
@@ -25,10 +25,15 @@
static void merge_ref(AVFilterFormats *ret, AVFilterFormats *a)
{
int i;
+
for(i = 0; i < a->refcount; i ++) {
ret->refs[ret->refcount] = a->refs[i];
*ret->refs[ret->refcount++] = ret;
}
+
+ av_free(a->refs);
+ av_free(a->formats);
+ av_free(a);
}
AVFilterFormats *avfilter_merge_formats(AVFilterFormats *a, AVFilterFormats *b)
@@ -58,14 +63,6 @@ AVFilterFormats *avfilter_merge_formats(AVFilterFormats *a, AVFilterFormats *b)
merge_ref(ret, a);
merge_ref(ret, b);
- av_free(a->refs);
- av_free(a->formats);
- av_free(a);
-
- av_free(b->refs);
- av_free(b->formats);
- av_free(b);
-
return ret;
}