--- trunk/libmpdemux/demux_mov.c 2008/01/29 22:13:20 25920 +++ trunk/libmpdemux/demux_mov.c 2008/01/29 22:14:00 25922 @@ -175,11 +175,12 @@ i=trak->chunkmap_size; while(i>0){ --i; - for(j=trak->chunkmap[i].first;jchunkmap[i].first, 0); + for(;jchunks[j].desc=trak->chunkmap[i].sdid; trak->chunks[j].size=trak->chunkmap[i].spc; } - last=trak->chunkmap[i].first; + last=FFMIN(trak->chunkmap[i].first, trak->chunks_size); } #if 0 @@ -237,6 +238,8 @@ s=0; for(j=0;jdurmap_size;j++){ for(i=0;idurmap[j].num;i++){ + if (s >= trak->samples_size) + break; trak->samples[s].pts=pts; ++s; pts+=trak->durmap[j].dur; @@ -248,6 +251,8 @@ for(j=0;jchunks_size;j++){ off_t pos=trak->chunks[j].pos; for(i=0;ichunks[j].size;i++){ + if (s >= trak->samples_size) + break; trak->samples[s].pos=pos; mp_msg(MSGT_DEMUX, MSGL_DBG3, "Sample %5d: pts=%8d off=0x%08X size=%d\n",s, trak->samples[s].pts,