# HG changeset patch # User reimar # Date 1239446336 0 # Node ID 92468cd5b594101e7531af0ac0ec45f5d9dd4778 # Parent 69c5cb7c048771f4785a10e6542c6897ea76ae99 Make electronicarts demuxer return partial frames, this is the default behaviour of av_get_packet and should not be override without good reason. As a side effect this fixes the memleak described in issue 956. Also return the exact error code from av_get_packet instead of AVERROR(EIO). diff -r 69c5cb7c0487 -r 92468cd5b594 electronicarts.c --- a/electronicarts.c Fri Apr 10 17:12:36 2009 +0000 +++ b/electronicarts.c Sat Apr 11 10:38:56 2009 +0000 @@ -470,9 +470,8 @@ chunk_size -= 12; } ret = av_get_packet(pb, pkt, chunk_size); - if (ret != chunk_size) - ret = AVERROR(EIO); - else { + if (ret < 0) + return ret; pkt->stream_index = ea->audio_stream_index; pkt->pts = 90000; pkt->pts *= ea->audio_frame_counter; @@ -493,7 +492,6 @@ ea->audio_frame_counter += chunk_size / (ea->bytes * ea->num_channels); } - } packet_read = 1; break; @@ -531,12 +529,10 @@ case MV0F_TAG: get_video_packet: ret = av_get_packet(pb, pkt, chunk_size); - if (ret != chunk_size) - ret = AVERROR_IO; - else { + if (ret < 0) + return ret; pkt->stream_index = ea->video_stream_index; pkt->flags |= key; - } packet_read = 1; break;