Ticket #4256: patchmxf.diff

File patchmxf.diff, 1.7 KB (added by Carl Eugen Hoyos, 11 years ago)
  • libavformat/mxfdec.c

    diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c
    index 646a3ea..5c32b45 100644
    a b static const uint8_t mxf_avid_project_name[] = { 0xa5,0xfb,0x7b,0x  
    284284
    285285#define IS_KLV_KEY(x, y) (!memcmp(x, y, sizeof(y)))
    286286
    287 static void mxf_free_metadataset(MXFMetadataSet **ctx)
     287static void mxf_free_metadataset(MXFMetadataSet **ctx, int freectx)
    288288{
    289289    MXFIndexTableSegment *seg;
    290290    switch ((*ctx)->type) {
    static void mxf_free_metadataset(MXFMetadataSet **ctx)  
    313313    default:
    314314        break;
    315315    }
     316    if (freectx)
    316317    av_freep(ctx);
    317318}
    318319
    static int mxf_read_local_tags(MXFContext *mxf, KLVPacket *klv, MXFMetadataReadF  
    22132214        if (ctx_size && tag == 0x3C0A) {
    22142215            avio_read(pb, ctx->uid, 16);
    22152216        } else if ((ret = read_child(ctx, pb, tag, size, uid, -1)) < 0) {
    2216             mxf_free_metadataset(&ctx);
     2217            mxf_free_metadataset(&ctx, ctx_size);
    22172218            return ret;
    22182219        }
    22192220
    static int mxf_read_local_tags(MXFContext *mxf, KLVPacket *klv, MXFMetadataReadF  
    22222223        if (avio_tell(pb) > klv_end) {
    22232224            if (ctx_size) {
    22242225                ctx->type = type;
    2225                 mxf_free_metadataset(&ctx);
     2226                mxf_free_metadataset(&ctx, ctx_size);
    22262227            }
    22272228
    22282229            av_log(mxf->fc, AV_LOG_ERROR,
    static int mxf_read_close(AVFormatContext *s)  
    29182919        s->streams[i]->priv_data = NULL;
    29192920
    29202921    for (i = 0; i < mxf->metadata_sets_count; i++) {
    2921         mxf_free_metadataset(mxf->metadata_sets + i);
     2922        mxf_free_metadataset(mxf->metadata_sets + i, 1);
    29222923    }
    29232924    av_freep(&mxf->partitions);
    29242925    av_freep(&mxf->metadata_sets);