diff --git a/libavformat/avio.c b/libavformat/avio.c index dc40384fc5..44bc3afeaf 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -70,11 +70,14 @@ int url_open(URLContext **puc, const char *filename, int flags) err = -ENOENT; goto fail; found: - uc = av_malloc(sizeof(URLContext) + strlen(filename)); + uc = av_malloc(sizeof(URLContext) + strlen(filename) + 1); if (!uc) { err = -ENOMEM; goto fail; } +#if LIBAVFORMAT_VERSION_INT >= (52<<16) + uc->filename = (char *) &uc[1]; +#endif strcpy(uc->filename, filename); uc->prot = up; uc->flags = flags; diff --git a/libavformat/avio.h b/libavformat/avio.h index 3f733f0a71..f44d52694f 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -33,7 +33,11 @@ struct URLContext { int is_streamed; /* true if streamed (no seek possible), default = false */ int max_packet_size; /* if non zero, the stream is packetized with this max packet size */ void *priv_data; +#if LIBAVFORMAT_VERSION_INT >= (52<<16) + char *filename; /* specified filename */ +#else char filename[1]; /* specified filename */ +#endif }; typedef struct URLContext URLContext;