matroskadec: do not use avpacket internals
authorAnton Khirnov <anton@khirnov.net>
Thu, 1 Nov 2012 05:34:41 +0000 (06:34 +0100)
committerAnton Khirnov <anton@khirnov.net>
Fri, 2 Nov 2012 17:28:56 +0000 (18:28 +0100)
libavformat/matroskadec.c

index 26f8707..bf67253 100644 (file)
@@ -1137,13 +1137,14 @@ static void matroska_fix_ass_packet(MatroskaDemuxContext *matroska,
 
 static int matroska_merge_packets(AVPacket *out, AVPacket *in)
 {
-    void *newdata = av_realloc(out->data, out->size+in->size);
-    if (!newdata)
-        return AVERROR(ENOMEM);
-    out->data = newdata;
-    memcpy(out->data+out->size, in->data, in->size);
-    out->size += in->size;
-    av_destruct_packet(in);
+    int old_size = out->size;
+    int ret = av_grow_packet(out, in->size);
+    if (ret < 0)
+        return ret;
+
+    memcpy(out->data + old_size, in->data, in->size);
+
+    av_free_packet(in);
     av_free(in);
     return 0;
 }