diff --git a/libavformat/tee.c b/libavformat/tee.c index 40b59a4be9..12ea0ea27d 100644 --- a/libavformat/tee.c +++ b/libavformat/tee.c @@ -102,10 +102,10 @@ fail: static int parse_bsfs(void *log_ctx, const char *bsfs_spec, AVBitStreamFilterContext **bsfs) { - char *bsf_name, *buf, *saveptr; + char *bsf_name, *buf, *dup, *saveptr; int ret = 0; - if (!(buf = av_strdup(bsfs_spec))) + if (!(dup = buf = av_strdup(bsfs_spec))) return AVERROR(ENOMEM); while (bsf_name = av_strtok(buf, ",", &saveptr)) { @@ -128,7 +128,7 @@ static int parse_bsfs(void *log_ctx, const char *bsfs_spec, } end: - av_free(buf); + av_free(dup); return ret; } @@ -280,6 +280,7 @@ static int open_slave(AVFormatContext *avf, char *slave, TeeSlave *tee_slave) end: av_free(format); + av_free(select); av_dict_free(&options); return ret; } @@ -302,6 +303,7 @@ static void close_slaves(AVFormatContext *avf) } } av_freep(&tee->slaves[i].stream_map); + av_freep(&tee->slaves[i].bsfs); avio_close(avf2->pb); avf2->pb = NULL;