]> git.sesse.net Git - vlc/commitdiff
Currently, Read() might returns less than i_len bytes, while not at the
authorFrédéric Yhuel <fyhuel@viotech.net>
Fri, 23 Mar 2012 13:06:59 +0000 (14:06 +0100)
committerHugo Beauzée-Luyssen <beauze.h@gmail.com>
Fri, 23 Mar 2012 13:07:23 +0000 (14:07 +0100)
end of the stream. This is wrong and the patch fix that.

Signed-off-by: Hugo Beauzée-Luyssen <beauze.h@gmail.com>
modules/stream_filter/dash/dash.cpp

index d1ca988bbdbf1c012ce8645c45e6e03985416a29..98123c034e85cdf604694ff8d4c16f22307c2edf 100644 (file)
@@ -165,10 +165,20 @@ static int  Read            (stream_t *p_stream, void *p_buffer, unsigned int i_
     stream_sys_t        *p_sys          = (stream_sys_t *) p_stream->p_sys;
     dash::DASHManager   *p_dashManager  = p_sys->p_dashManager;
     int                 i_ret           = 0;
+    int                 i_read          = 0;
 
-    i_ret = p_dashManager->read(p_buffer, i_len );
+    while( i_len > 0 )
+    {
+        i_read = p_dashManager->read( p_buffer, i_len );
+        if( i_read < 0 )
+            break;
+        p_buffer += i_read;
+        i_ret += i_read;
+        i_len -= i_read;
+    }
+    p_buffer -= i_ret;
 
-    if (i_ret < 0)
+    if (i_read < 0)
     {
         switch (errno)
         {