[FFmpeg-cvslog] avformat/matroskaenc: functions that add entries should not destroy the whole list on failure

Michael Niedermayer git at videolan.org
Wed Sep 11 12:31:35 CEST 2013


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Sep 11 12:13:44 2013 +0200| [c9367c07091b7e89964af71ffca8f24891b61284] | committer: 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: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c9367c07091b7e89964af71ffca8f24891b61284
---

 libavformat/matroskaenc.c |   18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index c6541b2..13523f8 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -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)
 {
     mkv_seekhead_entry *entries = seekhead->entries;
-    int err;
 
     // don't store more elements than we reserved space for
     if (seekhead->max_entries > 0 && seekhead->max_entries <= seekhead->num_entries)
         return -1;
 
-    if ((err = av_reallocp_array(&entries, seekhead->num_entries + 1,
-                                 sizeof(*entries))) < 0) {
-        seekhead->num_entries = 0;
-        return err;
-    }
+    entries = av_realloc(entries, (seekhead->num_entries + 1) * sizeof(mkv_seekhead_entry));
+    if (entries == NULL)
+        return AVERROR(ENOMEM);
 
     entries[seekhead->num_entries  ].elementid = elementid;
     entries[seekhead->num_entries++].segmentpos = filepos - seekhead->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)
 {
     mkv_cuepoint *entries = cues->entries;
-    int err;
 
     if (ts < 0)
         return 0;
 
-    if ((err = av_reallocp_array(&entries, cues->num_entries + 1,
-                                 sizeof(*entries))) < 0) {
-        cues->num_entries = 0;
-        return err;
-    }
+    entries = av_realloc(entries, (cues->num_entries + 1) * sizeof(mkv_cuepoint));
+    if (entries == NULL)
+        return AVERROR(ENOMEM);
 
     entries[cues->num_entries  ].pts = ts;
     entries[cues->num_entries  ].tracknum = stream + 1;



More information about the ffmpeg-cvslog mailing list