diff options
author | Joshua Colp <jcolp@digium.com> | 2017-11-07 14:32:15 -0600 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-11-07 14:32:15 -0600 |
commit | 7657519a537aa0361c8331e570d8bf27493430fc (patch) | |
tree | 263a9319043dc18f98059fdcb76d631de5f0f8e9 /main | |
parent | 5a60ce3ee3b1534a73689ec4621e717998b3f454 (diff) | |
parent | b4240bea6c18c81dba331abb6a42106d4cdc52e0 (diff) |
Merge "format_cap: Fix leak on AST_VECTOR_APPEND error." into 13
Diffstat (limited to 'main')
-rw-r--r-- | main/format_cap.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/main/format_cap.c b/main/format_cap.c index fc5686652..8a00ed64d 100644 --- a/main/format_cap.c +++ b/main/format_cap.c @@ -177,13 +177,16 @@ static inline int format_cap_framed_init(struct format_cap_framed *framed, struc } list = AST_VECTOR_GET_ADDR(&cap->formats, ast_format_get_codec_id(format)); + /* This takes the allocation reference */ + if (AST_VECTOR_APPEND(&cap->preference_order, framed)) { + ao2_ref(framed, -1); + return -1; + } + /* Order doesn't matter for formats, so insert at the head for performance reasons */ ao2_ref(framed, +1); AST_LIST_INSERT_HEAD(list, framed, entry); - /* This takes the allocation reference */ - AST_VECTOR_APPEND(&cap->preference_order, framed); - cap->framing = MIN(cap->framing, framing ? framing : ast_format_get_default_ms(format)); return 0; |