Commit 7b7ca65b authored by Jim Bankoski's avatar Jim Bankoski

fix valgrind mem leak on garbage decode

Multiple decoders were getting allocated per frame.
If the decoder crashed we exitted with out freeing
them and the next time in we'd allocate over.

This fix removes the allocation and just has 8
boolcoders in the pbi structure

Change-Id: I638b5bda23b622b43b7992aec21dd7cf6f6278da
parent 2ff6d350
......@@ -831,9 +831,7 @@ static void setup_token_decoder(VP8D_COMP *pbi,
num_token_partitions = 1 << pbi->common.multi_token_partition;
if (num_token_partitions > 1)
{
CHECK_MEM_ERROR(pbi->mbc, vpx_malloc(num_token_partitions *
sizeof(vp8_reader)));
bool_decoder = pbi->mbc;
bool_decoder = &pbi->mbc[0];
}
/* Check for partitions within the fragments and unpack the fragments
......@@ -907,16 +905,6 @@ static void setup_token_decoder(VP8D_COMP *pbi,
#endif
}
static void stop_token_decoder(VP8D_COMP *pbi)
{
VP8_COMMON *pc = &pbi->common;
if (pc->multi_token_partition != ONE_PARTITION)
{
vpx_free(pbi->mbc);
pbi->mbc = NULL;
}
}
static void init_frame(VP8D_COMP *pbi)
{
......@@ -1441,8 +1429,6 @@ int vp8_decode_frame(VP8D_COMP *pbi)
corrupt_tokens |= xd->corrupted;
}
stop_token_decoder(pbi);
/* Collect information about decoder corruption. */
/* 1. Check first boolean decoder for errors. */
pc->yv12_fb[pc->new_fb_idx].corrupted = vp8dx_bool_error(bc);
......
......@@ -120,7 +120,6 @@ void vp8dx_remove_decompressor(VP8D_COMP *pbi)
vp8_de_alloc_overlap_lists(pbi);
#endif
vp8_remove_common(&pbi->common);
vpx_free(pbi->mbc);
vpx_free(pbi);
}
......
......@@ -77,7 +77,7 @@ typedef struct VP8D_COMP
/* end of threading data */
#endif
vp8_reader *mbc;
vp8_reader mbc[8];
int64_t last_time_stamp;
int ready_for_new_data;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment