Commit c9367c07 authored by Michael Niedermayer's avatar Michael Niedermayer

avformat/matroskaenc: functions that add entries should not destroy the whole list on failure

This reverts a hunk from "avformat: Use av_reallocp_array() where suitable"
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 32805f85
...@@ -302,17 +302,14 @@ static mkv_seekhead * mkv_start_seekhead(AVIOContext *pb, int64_t segment_offset ...@@ -302,17 +302,14 @@ static mkv_seekhead * mkv_start_seekhead(AVIOContext *pb, int64_t segment_offset
static int mkv_add_seekhead_entry(mkv_seekhead *seekhead, unsigned int elementid, uint64_t filepos) static int mkv_add_seekhead_entry(mkv_seekhead *seekhead, unsigned int elementid, uint64_t filepos)
{ {
mkv_seekhead_entry *entries = seekhead->entries; mkv_seekhead_entry *entries = seekhead->entries;
int err;
// don't store more elements than we reserved space for // don't store more elements than we reserved space for
if (seekhead->max_entries > 0 && seekhead->max_entries <= seekhead->num_entries) if (seekhead->max_entries > 0 && seekhead->max_entries <= seekhead->num_entries)
return -1; return -1;
if ((err = av_reallocp_array(&entries, seekhead->num_entries + 1, entries = av_realloc(entries, (seekhead->num_entries + 1) * sizeof(mkv_seekhead_entry));
sizeof(*entries))) < 0) { if (entries == NULL)
seekhead->num_entries = 0; return AVERROR(ENOMEM);
return err;
}
entries[seekhead->num_entries ].elementid = elementid; entries[seekhead->num_entries ].elementid = elementid;
entries[seekhead->num_entries++].segmentpos = filepos - seekhead->segment_offset; entries[seekhead->num_entries++].segmentpos = filepos - seekhead->segment_offset;
...@@ -387,16 +384,13 @@ static mkv_cues * mkv_start_cues(int64_t segment_offset) ...@@ -387,16 +384,13 @@ static mkv_cues * mkv_start_cues(int64_t segment_offset)
static int mkv_add_cuepoint(mkv_cues *cues, int stream, int64_t ts, int64_t cluster_pos, int64_t relative_pos) static int mkv_add_cuepoint(mkv_cues *cues, int stream, int64_t ts, int64_t cluster_pos, int64_t relative_pos)
{ {
mkv_cuepoint *entries = cues->entries; mkv_cuepoint *entries = cues->entries;
int err;
if (ts < 0) if (ts < 0)
return 0; return 0;
if ((err = av_reallocp_array(&entries, cues->num_entries + 1, entries = av_realloc(entries, (cues->num_entries + 1) * sizeof(mkv_cuepoint));
sizeof(*entries))) < 0) { if (entries == NULL)
cues->num_entries = 0; return AVERROR(ENOMEM);
return err;
}
entries[cues->num_entries ].pts = ts; entries[cues->num_entries ].pts = ts;
entries[cues->num_entries ].tracknum = stream + 1; entries[cues->num_entries ].tracknum = stream + 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment