From 044fc491fa71fafb8fac624c26142aa172d27b6c Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 18 Sep 2010 17:24:39 +0000 Subject: demux_mkv: fix decoded length calculation of LZO decompression git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32305 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/demux_mkv.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'libmpdemux/demux_mkv.c') diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index 807fcd68f8..de43972c95 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -368,6 +368,7 @@ static void demux_mkv_decode(mkv_track_t *track, uint8_t *src, #endif } else if (enc->comp_algo == 2) { /* lzo encoded track */ + int out_avail; int dstlen = *size * 3; *dest = NULL; @@ -375,7 +376,8 @@ static void demux_mkv_decode(mkv_track_t *track, uint8_t *src, int srclen = *size; *dest = talloc_realloc_size(NULL, *dest, dstlen + AV_LZO_OUTPUT_PADDING); - int result = av_lzo1x_decode(*dest, &dstlen, src, &srclen); + out_avail = dstlen; + int result = av_lzo1x_decode(*dest, &out_avail, src, &srclen); if (result == 0) break; if (!(result & AV_LZO_OUTPUT_FULL)) { @@ -389,7 +391,7 @@ static void demux_mkv_decode(mkv_track_t *track, uint8_t *src, "[mkv] lzo decompression buffer too small.\n"); dstlen *= 2; } - *size = dstlen; + *size = dstlen - out_avail; } else if (enc->comp_algo == 3) { *dest = talloc_size(NULL, *size + enc->comp_settings_len); memcpy(*dest, enc->comp_settings, enc->comp_settings_len); -- cgit v1.2.3