diff --git a/libavformat/jvdec.c b/libavformat/jvdec.c
index caf29a8f6c185a5f9004ca374c41aef4c30ef3ee..6bf220fed2bb7973a44b4d17925da62898d4bca5 100644
--- a/libavformat/jvdec.c
+++ b/libavformat/jvdec.c
@@ -59,6 +59,15 @@ static int read_probe(AVProbeData *pd)
     return 0;
 }
 
+static int read_close(AVFormatContext *s)
+{
+    JVDemuxContext *jv = s->priv_data;
+
+    av_freep(&jv->frames);
+
+    return 0;
+}
+
 static int read_header(AVFormatContext *s)
 {
     JVDemuxContext *jv = s->priv_data;
@@ -229,4 +238,5 @@ AVInputFormat ff_jv_demuxer = {
     .read_header    = read_header,
     .read_packet    = read_packet,
     .read_seek      = read_seek,
+    .read_close     = read_close,
 };