diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-09-11 12:13:44 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-09-11 12:15:08 +0200 |
commit | 32805f852116f792b85635680a804b10edf26210 (patch) | |
tree | aa94bd0e96ede9b5484dbf1d70acd832ee16f768 | |
parent | cbe47b1e8452e37fda592941e7d3f3bb5920c201 (diff) |
avformat/matroskadec: ebml_parse_elem() should not deallocate priorly existing lists on failure
This reverts a hunk from "avformat: Use av_reallocp_array() where suitable"
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/matroskadec.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 0e97d881ac..50cb51bfa5 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -945,16 +945,15 @@ static int ebml_parse_elem(MatroskaDemuxContext *matroska, uint32_t id = syntax->id; uint64_t length; int res; + void *newelem; data = (char *)data + syntax->data_offset; if (syntax->list_elem_size) { EbmlList *list = data; - if ((res = av_reallocp_array(&list->elem, - list->nb_elem + 1, - syntax->list_elem_size)) < 0) { - list->nb_elem = 0; - return res; - } + newelem = av_realloc(list->elem, (list->nb_elem+1)*syntax->list_elem_size); + if (!newelem) + return AVERROR(ENOMEM); + list->elem = newelem; data = (char*)list->elem + list->nb_elem*syntax->list_elem_size; memset(data, 0, syntax->list_elem_size); list->nb_elem++; |