cid: 1396268
when av_strdup(str) error, the lst need release
Signed-off-by: Steven Liu <[email protected]>
---
libavcodec/bsf.c | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c
index ac2024b..c9b1df2 100644
--- a/libavcodec/bsf.c
+++ b/libavcodec/bsf.c
@@ -514,8 +514,10 @@ int av_bsf_list_parse_str(const char *str, AVBSFContext
**bsf_lst)
if (!lst)
return AVERROR(ENOMEM);
- if (!(dup = buf = av_strdup(str)))
- return AVERROR(ENOMEM);
+ if (!(dup = buf = av_strdup(str))) {
+ ret = AVERROR(ENOMEM);
+ goto free_lst;
+ }
while (1) {
bsf_str = av_strtok(buf, ",", &saveptr);
@@ -524,16 +526,17 @@ int av_bsf_list_parse_str(const char *str, AVBSFContext
**bsf_lst)
ret = bsf_parse_single(bsf_str, lst);
if (ret < 0)
- goto end;
+ goto free_all;
buf = NULL;
}
ret = av_bsf_list_finalize(&lst, bsf_lst);
-end:
+free_all:
+ av_free(dup);
+free_lst:
if (ret < 0)
av_bsf_list_free(&lst);
- av_free(dup);
return ret;
}
--
2.10.1.382.ga23ca1b.dirty
_______________________________________________
ffmpeg-devel mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel