vlc/vlc-2.2 | branch: master | Hannes Domani <[email protected]> | Wed Sep 10 13:12:33 2014 +0200| [642b319a89d42da815df0ef689a31a09f975f05a] | committer: Tristan Matthews
subtitle-demux: speedup SSA parser Signed-off-by: Tristan Matthews <[email protected]> (cherry picked from commit 6cccd64dacf431e1c33877e131b09ff906c85972) > http://git.videolan.org/gitweb.cgi/vlc/vlc-2.2.git/?a=commit;h=642b319a89d42da815df0ef689a31a09f975f05a --- modules/demux/subtitle.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/demux/subtitle.c b/modules/demux/subtitle.c index b20389c..c2a7642 100644 --- a/modules/demux/subtitle.c +++ b/modules/demux/subtitle.c @@ -1083,6 +1083,7 @@ static int ParseSSA( demux_t *p_demux, subtitle_t *p_subtitle, { demux_sys_t *p_sys = p_demux->p_sys; text_t *txt = &p_sys->txt; + size_t header_len = 0; for( ;; ) { @@ -1155,12 +1156,12 @@ static int ParseSSA( demux_t *p_demux, subtitle_t *p_subtitle, free( psz_text ); /* All the other stuff we add to the header field */ - char *psz_header; - if( asprintf( &psz_header, "%s%s\n", - p_sys->psz_header ? p_sys->psz_header : "", s ) == -1 ) + size_t s_len = strlen( s ); + p_sys->psz_header = realloc_or_free( p_sys->psz_header, header_len + s_len + 2 ); + if( !p_sys->psz_header ) return VLC_ENOMEM; - free( p_sys->psz_header ); - p_sys->psz_header = psz_header; + snprintf( p_sys->psz_header + header_len, s_len + 2, "%s\n", s ); + header_len += s_len + 1; } } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
