From: Jerome Jiang Date: Fri, 14 Jun 2019 16:50:30 +0000 (-0700) Subject: Fix memory leak for vp8 multi-res encoder. X-Git-Tag: v1.8.1~21^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c06a917501294f8845df580b114a13fce7269b2f;p=libvpx Fix memory leak for vp8 multi-res encoder. BUG=webm:1630 Change-Id: I03e74e78aa0ead66eda7506e921b1774b5442ed5 --- diff --git a/vpx/src/vpx_encoder.c b/vpx/src/vpx_encoder.c index 3385c22c0..f38577de6 100644 --- a/vpx/src/vpx_encoder.c +++ b/vpx/src/vpx_encoder.c @@ -82,6 +82,9 @@ vpx_codec_err_t vpx_codec_enc_init_multi_ver( res = VPX_CODEC_INCAPABLE; else { int i; +#if CONFIG_MULTI_RES_ENCODING + int mem_loc_owned = 0; +#endif void *mem_loc = NULL; if (iface->enc.mr_get_mem_loc == NULL) return VPX_CODEC_INCAPABLE; @@ -129,13 +132,17 @@ vpx_codec_err_t vpx_codec_enc_init_multi_ver( i--; } #if CONFIG_MULTI_RES_ENCODING - assert(mem_loc); - free(((LOWER_RES_FRAME_INFO *)mem_loc)->mb_info); - free(mem_loc); + if (!mem_loc_owned) { + assert(mem_loc); + free(((LOWER_RES_FRAME_INFO *)mem_loc)->mb_info); + free(mem_loc); + } #endif return SAVE_STATUS(ctx, res); } - +#if CONFIG_MULTI_RES_ENCODING + mem_loc_owned = 1; +#endif ctx++; cfg++; dsf++;