diff options
author | attila <attila@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-10-26 21:09:37 +0000 |
---|---|---|
committer | attila <attila@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-10-26 21:09:37 +0000 |
commit | bcfd5430908d309f80e35fbb1209d696b190178e (patch) | |
tree | 1db6f5751c52d8c686f1641bec990f1577b7dce2 /libmpdemux | |
parent | a904b9ba31ff857c615c870baf778a83a7072abc (diff) | |
download | mpv-bcfd5430908d309f80e35fbb1209d696b190178e.tar.bz2 mpv-bcfd5430908d309f80e35fbb1209d696b190178e.tar.xz |
* fix my 100l from before
* SSA is also ASS
* avoid multiple segfaults when there are more then SUB_MAX_TEXT-1 lines at the same time
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11277 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r-- | libmpdemux/demux_mkv.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/libmpdemux/demux_mkv.cpp b/libmpdemux/demux_mkv.cpp index dd3d7fac6f..e4b462ba00 100644 --- a/libmpdemux/demux_mkv.cpp +++ b/libmpdemux/demux_mkv.cpp @@ -491,6 +491,12 @@ static void handle_subtitles(demuxer_t *d, KaxBlock *block, int64_t duration) { line = 0; mkv_d->subs.lines++; + if (mkv_d->subs.lines> SUB_MAX_TEXT - 1 ) + { + mp_msg(MSGT_DEMUX, MSGL_WARN,"[mkv] Warning: too many sublines to render, skipping\n"); + mkv_d->subs.lines--; + return; + } s2 = mkv_d->subs.text[mkv_d->subs.lines - 1]; state = 0; @@ -2357,10 +2363,11 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) { sizeof(mkv_sh_sub_t)); demuxer->sub->id = track->xid; - } else if (!(strcmp(track->codec_id, MKV_S_TEXTASCII) && + } else if (strcmp(track->codec_id, MKV_S_TEXTASCII) && strcmp(track->codec_id, MKV_S_TEXTUTF8) && strcmp(track->codec_id, MKV_S_TEXTSSA) && - strcmp(track->codec_id, "S_SSA"))) + strcmp(track->codec_id, "S_SSA") && + strcmp(track->codec_id, "S_TEXT/ASS")) mp_msg(MSGT_DEMUX, MSGL_ERR, "[mkv] Subtitle type '%s' is not " "supported. Track will not be displayed.\n", track->codec_id); else { @@ -2374,7 +2381,8 @@ extern "C" int demux_mkv_open(demuxer_t *demuxer) { if (!strcmp(track->codec_id, MKV_S_TEXTUTF8)) sub_utf8 = 1; // Force UTF-8 conversion. if (!strcmp(track->codec_id, MKV_S_TEXTSSA) || - !strcmp(track->codec_id, "S_SSA")) { + !strcmp(track->codec_id, "S_SSA") || + !strcmp(track->codec_id, "S_TEXT/ASS")) { mkv_d->subtitle_type = MKV_SUBTYPE_SSA; sub_utf8 = 1; } else |