comparison libmpdemux/demux_mkv.c @ 23770:4decd04037b4

Avoid crash if a non-existent audio track is selected with -aid
author reimar
date Mon, 16 Jul 2007 14:01:53 +0000
parents cc06b5e849bb
children e6c3222f0f4a
comparison
equal deleted inserted replaced
23769:d484cdfcb8a8 23770:4decd04037b4
2518 } 2518 }
2519 } 2519 }
2520 else if (demuxer->audio->id != -2) /* -2 = no audio at all */ 2520 else if (demuxer->audio->id != -2) /* -2 = no audio at all */
2521 track = demux_mkv_find_track_by_num (mkv_d, demuxer->audio->id, 2521 track = demux_mkv_find_track_by_num (mkv_d, demuxer->audio->id,
2522 MATROSKA_TRACK_AUDIO); 2522 MATROSKA_TRACK_AUDIO);
2523 if (track && demuxer->a_streams[track->tnum])
2524 {
2525 demuxer->audio->id = track->tnum;
2526 demuxer->audio->sh = demuxer->a_streams[track->tnum];
2527 }
2523 else 2528 else
2524 { 2529 {
2525 mp_msg (MSGT_DEMUX, MSGL_INFO, MSGTR_MPDEMUX_MKV_NoAudioTrackFound); 2530 mp_msg (MSGT_DEMUX, MSGL_INFO, MSGTR_MPDEMUX_MKV_NoAudioTrackFound);
2526 demuxer->audio->id = -2; 2531 demuxer->audio->id = -2;
2527 } 2532 }
2532 { 2537 {
2533 if(mkv_d->tracks[i]->type != MATROSKA_TRACK_AUDIO) 2538 if(mkv_d->tracks[i]->type != MATROSKA_TRACK_AUDIO)
2534 continue; 2539 continue;
2535 if(demuxer->a_streams[track->tnum]) 2540 if(demuxer->a_streams[track->tnum])
2536 { 2541 {
2537 if(track && mkv_d->tracks[i] == track)
2538 {
2539 demuxer->audio->id = track->tnum;
2540 demuxer->audio->sh = demuxer->a_streams[track->tnum];
2541 }
2542 mkv_d->last_aid++; 2542 mkv_d->last_aid++;
2543 if(mkv_d->last_aid == MAX_A_STREAMS) 2543 if(mkv_d->last_aid == MAX_A_STREAMS)
2544 break; 2544 break;
2545 } 2545 }
2546 } 2546 }