diff options
Diffstat (limited to 'libavformat/format.c')
-rw-r--r-- | libavformat/format.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libavformat/format.c b/libavformat/format.c index 2d56e6d545..527299d652 100644 --- a/libavformat/format.c +++ b/libavformat/format.c @@ -243,6 +243,7 @@ int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat **fmt, int ret = 0, probe_size, buf_offset = 0; int score = 0; int ret2; + uint8_t *mime_type_opt = NULL; if (!max_probe_size) max_probe_size = PROBE_BUF_MAX; @@ -255,8 +256,11 @@ int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat **fmt, if (offset >= max_probe_size) return AVERROR(EINVAL); - if (pb->av_class) - av_opt_get(pb, "mime_type", AV_OPT_SEARCH_CHILDREN, &pd.mime_type); + if (pb->av_class) { + av_opt_get(pb, "mime_type", AV_OPT_SEARCH_CHILDREN, &mime_type_opt); + pd.mime_type = (const char *)mime_type_opt; + mime_type_opt = NULL; + } #if 0 if (!*fmt && pb->av_class && av_opt_get(pb, "mime_type", AV_OPT_SEARCH_CHILDREN, &mime_type) >= 0 && mime_type) { if (!av_strcasecmp(mime_type, "audio/aacp")) { @@ -320,7 +324,7 @@ fail: if (ret >= 0) ret = ret2; - av_free(pd.mime_type); + av_freep(&pd.mime_type); return ret < 0 ? ret : score; } |