diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c
index 7b9d96379a2572f053f86f66a68bb118d1d2af2e..4e5bfd2f1014cc11ad0e611e585340ec2033a44d 100644
--- a/libavfilter/avfiltergraph.c
+++ b/libavfilter/avfiltergraph.c
@@ -32,13 +32,18 @@ AVFilterGraph *avfilter_create_graph(void)
     return av_mallocz(sizeof(AVFilterGraph));
 }
 
-void avfilter_destroy_graph(AVFilterGraph *graph)
+static void destroy_graph_filters(AVFilterGraph *graph)
 {
     unsigned i;
 
     for(i = 0; i < graph->filter_count; i ++)
         avfilter_destroy(graph->filters[i]);
-    av_free(graph->filters);
+    av_freep(&graph->filters);
+}
+
+void avfilter_destroy_graph(AVFilterGraph *graph)
+{
+    destroy_graph_filters(graph);
     av_free(graph);
 }