diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index c0efa3a96d80de77f9e274459b5a4c2f08a3d109..aed748b37e94c74b7323391ece0b6d5ab8aded54 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -1630,8 +1630,8 @@ static int mov_write_udta_tag(ByteIOContext *pb, MOVMuxContext *mov,
         put_be32(pb, size+8);
         put_tag(pb, "udta");
         put_buffer(pb, buf, size);
-        av_free(buf);
     }
+    av_free(buf);
 
     return 0;
 }