diff options
-rw-r--r-- | libavformat/libmodplug.c | 18 |
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; } |