summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavformat/libmodplug.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/libavformat/libmodplug.c b/libavformat/libmodplug.c
index 212e225b00..b4978b9c2d 100644
--- a/libavformat/libmodplug.c
+++ b/libavformat/libmodplug.c
@@ -66,20 +66,16 @@ static int modplug_read_header(AVFormatContext *s, AVFormatParameters *ap)
static int modplug_read_packet(AVFormatContext *s, AVPacket *pkt)
{
- int ret, n;
ModPlugContext *modplug = s->priv_data;
- uint8_t buf[512];
- n = ModPlug_Read(modplug->f, buf, sizeof(buf));
- if (n <= 0)
- return AVERROR(EIO);
+ if (av_new_packet(pkt, 512) < 0)
+ return AVERROR(ENOMEM);
- ret = av_new_packet(pkt, n);
- if (ret)
- return ret;
- pkt->pts = pkt->dts = AV_NOPTS_VALUE;
- pkt->size = n;
- memcpy(pkt->data, buf, n);
+ pkt->size = ModPlug_Read(modplug->f, pkt->data, 512);
+ if (pkt->size <= 0) {
+ av_free_packet(pkt);
+ return AVERROR(EIO);
+ }
return 0;
}