diff options
author | Martin Storsjö <martin@martin.st> | 2013-09-26 16:37:02 +0300 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2013-09-26 23:14:03 +0300 |
commit | d872fb0f7ff2ff0ba87f5ccf6a1a55ca2be472c9 (patch) | |
tree | 92ef865da60624c41be1e58c505c95508662ad7d /libavformat/avienc.c | |
parent | 06ebc0bf9a6401733a4ce1310325de19f631819a (diff) | |
download | ffmpeg-d872fb0f7ff2ff0ba87f5ccf6a1a55ca2be472c9.tar.gz |
lavf: Reset the entry count and allocation size variables on av_reallocp failures
When av_reallocp fails, the associated variables that keep track of
the number of elements in the array (and in some cases, the
separate number of allocated elements) need to be reset.
Not all of these might technically be needed, but it's better to
reset them if in doubt, to make sure variables don't end up
conflicting.
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat/avienc.c')
-rw-r--r-- | libavformat/avienc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libavformat/avienc.c b/libavformat/avienc.c index e6d9dae20c..66339af2b0 100644 --- a/libavformat/avienc.c +++ b/libavformat/avienc.c @@ -538,8 +538,11 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) int cl = idx->entry / AVI_INDEX_CLUSTER_SIZE; int id = idx->entry % AVI_INDEX_CLUSTER_SIZE; if (idx->ents_allocated <= idx->entry) { - if ((err = av_reallocp(&idx->cluster, (cl + 1) * sizeof(*idx->cluster))) < 0) + if ((err = av_reallocp(&idx->cluster, (cl + 1) * sizeof(*idx->cluster))) < 0) { + idx->ents_allocated = 0; + idx->entry = 0; return err; + } idx->cluster[cl] = av_malloc(AVI_INDEX_CLUSTER_SIZE*sizeof(AVIIentry)); if (!idx->cluster[cl]) return -1; |