From 9a2ceee2e3aba4902ed1fcecfdfdd0b1921778fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= Date: Wed, 5 Oct 2011 21:20:28 +0200 Subject: [PATCH] libmodplug: simplify and fix read_packet() callback. In case of av_new_packet() error, a correct return error code is raised, the data memcpy is avoided, and pkt dts/pts are not assigned anymore (since the defaults are good). --- libavformat/libmodplug.c | 18 +++++++----------- 1 file 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) + if (av_new_packet(pkt, 512) < 0) + return AVERROR(ENOMEM); + + pkt->size = ModPlug_Read(modplug->f, pkt->data, 512); + if (pkt->size <= 0) { + av_free_packet(pkt); return AVERROR(EIO); - - 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); + } return 0; }