# HG changeset patch # User reimar # Date 1214733979 0 # Node ID f8df4c3e2ac20eca8f8f888910499323ecd577f4 # Parent 237e683b74804f9c4c21dc10414976cade50869e Replace asserts by proper conditions to allow playback of some broken but still playable files. diff -r 237e683b7480 -r f8df4c3e2ac2 libmpdemux/demux_asf.c --- a/libmpdemux/demux_asf.c Sun Jun 29 09:14:26 2008 +0000 +++ b/libmpdemux/demux_asf.c Sun Jun 29 10:06:19 2008 +0000 @@ -3,7 +3,6 @@ #include #include #include -#include #include "config.h" #include "mp_msg.h" @@ -501,8 +500,9 @@ int len2=p[0]; p++; //printf(" group part: %d bytes\n",len2); - if(len2 > len - 1) break; // Not enough data - assert(len2 > 0 && len2 <= asf->packetsize); + if(len2 > len - 1 || len2 < 0) break; // Not enough data + if(len2 == 0) continue; + len2 = FFMIN(len2, asf->packetsize); demux_asf_read_packet(demux,p,len2,streamno,seq,x,duration,-1,keyframe); p+=len2; len-=len2+1; @@ -515,8 +515,9 @@ default: // NO GROUPING: //printf("fragment offset: %d \n",sh->x); + if (len <= 0) break; if (!asf->asf_is_dvr_ms || asf->found_first_key_frame) { - assert(len > 0 && len <= asf->packetsize); + len = FFMIN(len, asf->packetsize); demux_asf_read_packet(demux,p,len,streamno,seq,time2,duration,x,keyframe); } p+=len;