[MPlayer-cvslog] r30387 - trunk/command.c
reimar
subversion at mplayerhq.hu
Fri Jan 22 22:10:41 CET 2010
Author: reimar
Date: Fri Jan 22 22:10:40 2010
New Revision: 30387
Log:
Also handle ASS subtitles when removing subtitles via sub_remove slave command.
Fixes memory leaks and other strange behaviour like mismatch of name and subtitle data.
Based on patch by Yuriy Kaminskiy [yumkam mail ru].
Modified:
trunk/command.c
Modified: trunk/command.c
==============================================================================
--- trunk/command.c Fri Jan 22 21:59:15 2010 (r30386)
+++ trunk/command.c Fri Jan 22 22:10:40 2010 (r30387)
@@ -2341,6 +2341,9 @@ static void remove_subtitle_range(MPCont
int end = start + count;
int after = mpctx->set_of_sub_size - end;
sub_data **subs = mpctx->set_of_subtitles;
+#ifdef CONFIG_ASS
+ ass_track_t **ass_tracks = mpctx->set_of_ass_tracks;
+#endif
if (count < 0 || count > mpctx->set_of_sub_size ||
start < 0 || start > mpctx->set_of_sub_size - count) {
mp_msg(MSGT_CPLAYER, MSGL_ERR,
@@ -2354,6 +2357,11 @@ static void remove_subtitle_range(MPCont
filename_recode(subd->filename));
sub_free(subd);
subs[idx] = NULL;
+#ifdef CONFIG_ASS
+ if (ass_tracks[idx])
+ ass_free_track(ass_tracks[idx]);
+ ass_tracks[idx] = NULL;
+#endif
}
mpctx->global_sub_size -= count;
@@ -2363,10 +2371,17 @@ static void remove_subtitle_range(MPCont
memmove(subs + start, subs + end, after * sizeof(*subs));
memset(subs + start + after, 0, count * sizeof(*subs));
+#ifdef CONFIG_ASS
+ memmove(ass_tracks + start, ass_tracks + end, after * sizeof(*ass_tracks));
+ memset(ass_tracks + start + after, 0, count * sizeof(*ass_tracks));
+#endif
if (mpctx->set_of_sub_pos >= start && mpctx->set_of_sub_pos < end) {
mpctx->global_sub_pos = -2;
subdata = NULL;
+#ifdef CONFIG_ASS
+ ass_track = NULL;
+#endif
mp_input_queue_cmd(mp_input_parse_cmd("sub_select"));
} else if (mpctx->set_of_sub_pos >= end) {
mpctx->set_of_sub_pos -= count;
More information about the MPlayer-cvslog
mailing list