Merge "Decoder: Handle ps_codec_obj memory allocation failure gracefully" into mnc-dr-dev am: 59d29f3a42 am: 1232ed762a am: c3388332a1 am: 9616d06d9f am: b248b90e5c

am: 9268f7f6f8

Change-Id: I9468f9ecd8f74791bfafe978f7633013b197198d
This commit is contained in:
Harish Mahendrakar 2017-11-03 19:17:36 +00:00 committed by android-build-merger
commit ba34c2e4f6

View file

@ -2075,21 +2075,37 @@ WORD32 ihevcd_create(iv_obj_t *ps_codec_obj,
void *pv_api_ip,
void *pv_api_op)
{
ihevcd_cxa_create_ip_t *ps_create_ip;
ihevcd_cxa_create_op_t *ps_create_op;
WORD32 ret;
codec_t *ps_codec;
ps_create_ip = (ihevcd_cxa_create_ip_t *)pv_api_ip;
ps_create_op = (ihevcd_cxa_create_op_t *)pv_api_op;
ps_create_op->s_ivd_create_op_t.u4_error_code = 0;
ps_codec_obj = NULL;
ret = ihevcd_allocate_static_bufs(&ps_codec_obj, pv_api_ip, pv_api_op);
/* If allocation of some buffer fails, then free buffers allocated till then */
if((IV_FAIL == ret) && (NULL != ps_codec_obj))
if(IV_FAIL == ret)
{
ihevcd_free_static_bufs(ps_codec_obj);
if(NULL != ps_codec_obj)
{
if(ps_codec_obj->pv_codec_handle)
{
ihevcd_free_static_bufs(ps_codec_obj);
}
else
{
void (*pf_aligned_free)(void *pv_mem_ctxt, void *pv_buf);
void *pv_mem_ctxt;
pf_aligned_free = ps_create_ip->s_ivd_create_ip_t.pf_aligned_free;
pv_mem_ctxt = ps_create_ip->s_ivd_create_ip_t.pv_mem_ctxt;
pf_aligned_free(pv_mem_ctxt, ps_codec_obj);
}
}
ps_create_op->s_ivd_create_op_t.u4_error_code = IVD_MEM_ALLOC_FAILED;
ps_create_op->s_ivd_create_op_t.u4_error_code = 1 << IVD_FATALERROR;