From 734e59d5a7b7f77edc37ddeff016f747b7f46a86 Mon Sep 17 00:00:00 2001 From: Jing Sima Date: Fri, 23 Aug 2024 15:52:22 +0800 Subject: [PATCH] fix:[TD-31654] Free memory at the end of substrIdxFunction to avoid memory leak. --- source/libs/scalar/src/sclfunc.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/source/libs/scalar/src/sclfunc.c b/source/libs/scalar/src/sclfunc.c index 477a768ccf..ed55bde663 100644 --- a/source/libs/scalar/src/sclfunc.c +++ b/source/libs/scalar/src/sclfunc.c @@ -1544,9 +1544,15 @@ int32_t replaceFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pO needFreeFrom = true; } if (GET_PARAM_TYPE(&pInput[2]) != GET_PARAM_TYPE(&pInput[0])) { - SCL_ERR_JRET(convBetweenNcharAndVarchar(varDataVal(colDataGetData(pInputData[2], colIdx3)), &toStr, - varDataLen(colDataGetData(pInputData[2], colIdx3)), &toLen, - GET_PARAM_TYPE(&pInput[0]))); + code = convBetweenNcharAndVarchar(varDataVal(colDataGetData(pInputData[2], colIdx3)), &toStr, + varDataLen(colDataGetData(pInputData[2], colIdx3)), &toLen, + GET_PARAM_TYPE(&pInput[0])); + if (TSDB_CODE_SUCCESS != code) { + if (needFreeFrom) { + taosMemoryFree(fromStr); + } + goto _return; + } needFreeTo = true; } @@ -1660,9 +1666,9 @@ int32_t substrIdxFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam * SCL_ERR_JRET(colDataSetVal(pOutputData, k, output, false)); } - -_return: pOutput->numOfRows = numOfRows; +_return: + taosMemoryFree(outputBuf); return code; }