summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorlumag <lumag@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-09-20 12:50:25 +0000
committerlumag <lumag@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-09-20 12:50:25 +0000
commit175884718b19cd94175f4805820792d14346e0b4 (patch)
tree5827f159b6995c09f739bab82919d813c6ca9eca /libmpdemux
parent3633450622441ef3d5caf195280749ab6116db5f (diff)
downloadmpv-175884718b19cd94175f4805820792d14346e0b4.tar.bz2
mpv-175884718b19cd94175f4805820792d14346e0b4.tar.xz
Fixed 'reading after EOF'. demuxers didn't check, how many they've read!
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10892 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_audio.c3
-rw-r--r--libmpdemux/demux_rawaudio.c3
-rw-r--r--libmpdemux/demuxer.c3
3 files changed, 6 insertions, 3 deletions
diff --git a/libmpdemux/demux_audio.c b/libmpdemux/demux_audio.c
index b6ec8901a6..e8fdde5e80 100644
--- a/libmpdemux/demux_audio.c
+++ b/libmpdemux/demux_audio.c
@@ -265,7 +265,8 @@ int demux_audio_fill_buffer(demux_stream_t *ds) {
case WAV : {
int l = sh_audio->wf->nAvgBytesPerSec;
demux_packet_t* dp = new_demux_packet(l);
- stream_read(s,dp->buffer,l);
+ l = stream_read(s,dp->buffer,l);
+ resize_demux_packet(dp, l);
priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + l/(float)sh_audio->i_bps;
ds->pts = priv->last_pts - (ds_tell_pts(demux->audio)-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps;
ds_add_packet(ds,dp);
diff --git a/libmpdemux/demux_rawaudio.c b/libmpdemux/demux_rawaudio.c
index f096599abc..9f23eb4391 100644
--- a/libmpdemux/demux_rawaudio.c
+++ b/libmpdemux/demux_rawaudio.c
@@ -68,7 +68,8 @@ int demux_rawaudio_fill_buffer(demuxer_t* demuxer, demux_stream_t *ds) {
dp->pts = (spos - demuxer->movi_start) / (float)(sh_audio->wf->nAvgBytesPerSec);
dp->pos = (spos - demuxer->movi_start);
- stream_read(demuxer->stream,dp->buffer,l);
+ l = stream_read(demuxer->stream,dp->buffer,l);
+ resize_demux_packet(dp, l);
ds_add_packet(ds,dp);
return 1;
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index 907b36bcca..d8fab9068e 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -265,7 +265,8 @@ void ds_add_packet(demux_stream_t *ds,demux_packet_t* dp){
void ds_read_packet(demux_stream_t *ds,stream_t *stream,int len,float pts,off_t pos,int flags){
demux_packet_t* dp=new_demux_packet(len);
- stream_read(stream,dp->buffer,len);
+ len = stream_read(stream,dp->buffer,len);
+ resize_demux_packet(dp, len);
dp->pts=pts; //(float)pts/90000.0f;
dp->pos=pos;
dp->flags=flags;