avcodec/mpeg4videodec: unbreak multithreading decoding
authorJames Almer <jamrial@gmail.com>
Wed, 4 Apr 2018 14:06:55 +0000 (11:06 -0300)
committerJames Almer <jamrial@gmail.com>
Wed, 4 Apr 2018 14:09:11 +0000 (11:09 -0300)
Should fix double free related crashes.

Signed-off-by: James Almer <jamrial@gmail.com>
libavcodec/mpeg4videodec.c

index 53ad218..32eb3d1 100644 (file)
@@ -3380,11 +3380,13 @@ static av_cold int decode_end(AVCodecContext *avctx)
     Mpeg4DecContext *ctx = avctx->priv_data;
     int i;
 
-    for (i = 0; i < 12; i++)
-        ff_free_vlc(&ctx->studio_intra_tab[i]);
+    if (!avctx->internal->is_copy) {
+        for (i = 0; i < 12; i++)
+            ff_free_vlc(&ctx->studio_intra_tab[i]);
 
-    ff_free_vlc(&ctx->studio_luma_dc);
-    ff_free_vlc(&ctx->studio_chroma_dc);
+        ff_free_vlc(&ctx->studio_luma_dc);
+        ff_free_vlc(&ctx->studio_chroma_dc);
+    }
 
     return ff_h263_decode_end(avctx);
 }