From 06ef6826c43b4c97c18c19e7677ba143680d3ad5 Mon Sep 17 00:00:00 2001 From: "yandong.lin" Date: Fri, 20 Nov 2020 11:46:41 +0800 Subject: [PATCH] [mpp_init]: Handle initialization failures correctly clear resource and return when init fail Signed-off-by: yandong.lin Change-Id: I0fa8aa7c0742ce101127ffc26cccd0fe5809906f --- mpp/mpp.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/mpp/mpp.cpp b/mpp/mpp.cpp index 66fd3748..a9534c85 100644 --- a/mpp/mpp.cpp +++ b/mpp/mpp.cpp @@ -97,6 +97,8 @@ Mpp::Mpp() MPP_RET Mpp::init(MppCtxType type, MppCodingType coding) { + MPP_RET ret = MPP_NOK; + if (mpp_check_support_format(type, coding)) { mpp_err("unable to create unsupported type %d coding %d\n", type, coding); return MPP_NOK; @@ -145,9 +147,12 @@ MPP_RET Mpp::init(MppCtxType type, MppCodingType coding) this, }; - mpp_dec_init(&mDec, &cfg); - mpp_dec_start(mDec); - + ret = mpp_dec_init(&mDec, &cfg); + if (ret) + break; + ret = mpp_dec_start(mDec); + if (ret) + break; mInitDone = 1; } break; case MPP_CTX_ENC : { @@ -174,9 +179,12 @@ MPP_RET Mpp::init(MppCtxType type, MppCodingType coding) this, }; - mpp_enc_init_v2(&mEnc, &cfg); - mpp_enc_start_v2(mEnc); - + ret = mpp_enc_init_v2(&mEnc, &cfg); + if (ret) + break; + ret = mpp_enc_start_v2(mEnc); + if (ret) + break; mInitDone = 1; } break; default : { @@ -190,7 +198,7 @@ MPP_RET Mpp::init(MppCtxType type, MppCodingType coding) clear(); } - return MPP_OK; + return ret; } Mpp::~Mpp ()