@@ -322,7 +322,7 @@ static void demux_mkv_decode(mkv_track_t *track, uint8_t *src,
322
322
continue ;
323
323
324
324
if (src != * dest && src != orig_src )
325
- free (src );
325
+ talloc_free (src );
326
326
src = * dest ; // output from last iteration is new source
327
327
328
328
if (enc -> comp_algo == 0 ) {
@@ -350,13 +350,13 @@ static void demux_mkv_decode(mkv_track_t *track, uint8_t *src,
350
350
int result ;
351
351
do {
352
352
* size += 4000 ;
353
- * dest = realloc ( * dest , * size );
353
+ * dest = talloc_realloc_size ( NULL , * dest , * size );
354
354
zstream .next_out = (Bytef * ) (* dest + zstream .total_out );
355
355
result = inflate (& zstream , Z_NO_FLUSH );
356
356
if (result != Z_OK && result != Z_STREAM_END ) {
357
357
mp_tmsg (MSGT_DEMUX , MSGL_WARN ,
358
358
"[mkv] zlib decompression failed.\n" );
359
- free (* dest );
359
+ talloc_free (* dest );
360
360
* dest = NULL ;
361
361
inflateEnd (& zstream );
362
362
goto error ;
@@ -377,15 +377,16 @@ static void demux_mkv_decode(mkv_track_t *track, uint8_t *src,
377
377
int srclen = * size ;
378
378
if (dstlen > SIZE_MAX - AV_LZO_OUTPUT_PADDING )
379
379
goto lzo_fail ;
380
- * dest = realloc (* dest , dstlen + AV_LZO_OUTPUT_PADDING );
380
+ * dest = talloc_realloc_size (NULL , * dest ,
381
+ dstlen + AV_LZO_OUTPUT_PADDING );
381
382
int result = av_lzo1x_decode (* dest , & dstlen , src , & srclen );
382
383
if (result == 0 )
383
384
break ;
384
385
if (!(result & AV_LZO_OUTPUT_FULL )) {
385
386
lzo_fail :
386
387
mp_tmsg (MSGT_DEMUX , MSGL_WARN ,
387
388
"[mkv] lzo decompression failed.\n" );
388
- free (* dest );
389
+ talloc_free (* dest );
389
390
* dest = NULL ;
390
391
goto error ;
391
392
}
@@ -395,7 +396,7 @@ static void demux_mkv_decode(mkv_track_t *track, uint8_t *src,
395
396
}
396
397
* size = dstlen ;
397
398
} else if (enc -> comp_algo == 3 ) {
398
- * dest = malloc ( * size + enc -> comp_settings_len );
399
+ * dest = talloc_size ( NULL , * size + enc -> comp_settings_len );
399
400
memcpy (* dest , enc -> comp_settings , enc -> comp_settings_len );
400
401
memcpy (* dest + enc -> comp_settings_len , src , * size );
401
402
* size += enc -> comp_settings_len ;
@@ -404,7 +405,7 @@ static void demux_mkv_decode(mkv_track_t *track, uint8_t *src,
404
405
405
406
error :
406
407
if (src != * dest && src != orig_src )
407
- free (src );
408
+ talloc_free (src );
408
409
}
409
410
410
411
@@ -1587,7 +1588,8 @@ static int demux_mkv_open_sub(demuxer_t *demuxer, mkv_track_t *track,
1587
1588
size = track -> private_size ;
1588
1589
demux_mkv_decode (track , track -> private_data , & buffer , & size , 2 );
1589
1590
if (buffer && buffer != track -> private_data ) {
1590
- free (track -> private_data );
1591
+ talloc_free (track -> private_data );
1592
+ talloc_steal (track , buffer );
1591
1593
track -> private_data = buffer ;
1592
1594
track -> private_size = size ;
1593
1595
}
@@ -2195,7 +2197,7 @@ static int handle_block(demuxer_t *demuxer, uint8_t *block, uint64_t length,
2195
2197
demux_mkv_decode (track , block , & buffer , & size , 1 );
2196
2198
handle_subtitles (demuxer , track , buffer , size , block_duration , tc );
2197
2199
if (buffer != block )
2198
- free (buffer );
2200
+ talloc_free (buffer );
2199
2201
use_this_block = 0 ;
2200
2202
}
2201
2203
} else
@@ -2224,7 +2226,7 @@ static int handle_block(demuxer_t *demuxer, uint8_t *block, uint64_t length,
2224
2226
dp = new_demux_packet (size );
2225
2227
memcpy (dp -> buffer , buffer , size );
2226
2228
if (buffer != block )
2227
- free (buffer );
2229
+ talloc_free (buffer );
2228
2230
dp -> flags = (block_bref == 0
2229
2231
&& block_fref == 0 ) ? 0x10 : 0 ;
2230
2232
/* If default_duration is 0, assume no pts value is known
0 commit comments