On 2/7/2021 4:52 AM, Andreas Rheinhardt wrote:
James Almer:
Signed-off-by: James Almer <jamr...@gmail.com>
---
  libavformat/wc3movie.c | 21 ++++++++++-----------
  1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/libavformat/wc3movie.c b/libavformat/wc3movie.c
index 76e945d261..1fe582945a 100644
--- a/libavformat/wc3movie.c
+++ b/libavformat/wc3movie.c
@@ -69,7 +69,7 @@ typedef struct Wc3DemuxContext {
      int video_stream_index;
      int audio_stream_index;
- AVPacket vpkt;
+    AVPacket *vpkt;
} Wc3DemuxContext; @@ -77,8 +77,7 @@ static int wc3_read_close(AVFormatContext *s)
  {
      Wc3DemuxContext *wc3 = s->priv_data;
- if (wc3->vpkt.size > 0)
-        av_packet_unref(&wc3->vpkt);
+    av_packet_free(&wc3->vpkt);
return 0;
  }
@@ -110,8 +109,9 @@ static int wc3_read_header(AVFormatContext *s)
      wc3->height = WC3_DEFAULT_HEIGHT;
      wc3->pts = 0;
      wc3->video_stream_index = wc3->audio_stream_index = 0;
-    av_init_packet(&wc3->vpkt);
-    wc3->vpkt.data = NULL; wc3->vpkt.size = 0;
+    wc3->vpkt = av_packet_alloc();
+    if (!wc3->vpkt)
+        goto fail;

goto fail returns 0. You should instead just return AVERROR(ENOMEM)
directly. Nothing has been (successfully) allocated at this point.

Changed locally. Thanks.


/* skip the first 3 32-bit numbers */
      avio_skip(pb, 12);
@@ -162,7 +162,7 @@ static int wc3_read_header(AVFormatContext *s)
          case PALT_TAG:
              /* one of several palettes */
              avio_seek(pb, -8, SEEK_CUR);
-            av_append_packet(pb, &wc3->vpkt, 8 + PALETTE_SIZE);
+            av_append_packet(pb, wc3->vpkt, 8 + PALETTE_SIZE);
              break;
default:
@@ -248,18 +248,17 @@ static int wc3_read_packet(AVFormatContext *s,
          case SHOT_TAG:
              /* load up new palette */
              avio_seek(pb, -8, SEEK_CUR);
-            av_append_packet(pb, &wc3->vpkt, 8 + 4);
+            av_append_packet(pb, wc3->vpkt, 8 + 4);
              break;
case VGA__TAG:
              /* send out video chunk */
              avio_seek(pb, -8, SEEK_CUR);
-            ret= av_append_packet(pb, &wc3->vpkt, 8 + size);
+            ret= av_append_packet(pb, wc3->vpkt, 8 + size);
              // ignore error if we have some data
-            if (wc3->vpkt.size > 0)
+            if (wc3->vpkt->size > 0)
                  ret = 0;
-            *pkt = wc3->vpkt;
-            wc3->vpkt.data = NULL; wc3->vpkt.size = 0;
+            av_packet_move_ref(pkt, wc3->vpkt);
              pkt->stream_index = wc3->video_stream_index;
              pkt->pts = wc3->pts;
              packet_read = 1;


_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".


_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to