From 5071b5f7f56a6a0bcbfd35e619dabef637d869ce Mon Sep 17 00:00:00 2001 From: Shuduo Sang Date: Sat, 28 Mar 2020 10:45:00 +0800 Subject: [PATCH] fix pMemBuffer memory leak and function name typo - /destory/destroy --- src/client/src/tscSecondaryMerge.c | 8 +++++++- src/inc/textbuffer.h | 2 +- src/util/src/textbuffer.c | 2 +- src/util/src/tpercentile.c | 8 ++++---- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/client/src/tscSecondaryMerge.c b/src/client/src/tscSecondaryMerge.c index 51a59005f0..2eddd4e429 100644 --- a/src/client/src/tscSecondaryMerge.c +++ b/src/client/src/tscSecondaryMerge.c @@ -615,6 +615,7 @@ int32_t tscLocalReducerEnvCreate(SSqlObj *pSql, tExtMemBuffer ***pMemBuffer, tOr if (pSchema == NULL) { tscError("%p failed to allocate memory", pSql); pRes->code = TSDB_CODE_CLI_OUT_OF_MEMORY; + free(*pMemBuffer); return pRes->code; } @@ -642,6 +643,10 @@ int32_t tscLocalReducerEnvCreate(SSqlObj *pSql, tExtMemBuffer ***pMemBuffer, tOr if (createOrderDescriptor(pOrderDesc, pCmd, pModel) != TSDB_CODE_SUCCESS) { pRes->code = TSDB_CODE_CLI_OUT_OF_MEMORY; + for (int32_t i = 0; i < pMeterMetaInfo->pMetricMeta->numOfVnodes; ++i) { + destroyExtMemBuffer((*pMemBuffer)[i]); + } + free(*pMemBuffer); return pRes->code; } @@ -683,6 +688,7 @@ int32_t tscLocalReducerEnvCreate(SSqlObj *pSql, tExtMemBuffer ***pMemBuffer, tOr *pFinalModel = createColumnModel(pSchema, pQueryInfo->exprsInfo.numOfExprs, capacity); tfree(pSchema); + free(*pMemBuffer); return TSDB_CODE_SUCCESS; } @@ -698,7 +704,7 @@ void tscLocalReducerEnvDestroy(tExtMemBuffer **pMemBuffer, tOrderDescriptor *pDe destroyColumnModel(pFinalModel); tOrderDescDestroy(pDesc); for (int32_t i = 0; i < numOfVnodes; ++i) { - pMemBuffer[i] = destoryExtMemBuffer(pMemBuffer[i]); + pMemBuffer[i] = destroyExtMemBuffer(pMemBuffer[i]); } tfree(pMemBuffer); diff --git a/src/inc/textbuffer.h b/src/inc/textbuffer.h index b46b98ed38..ec7a192fad 100644 --- a/src/inc/textbuffer.h +++ b/src/inc/textbuffer.h @@ -136,7 +136,7 @@ tExtMemBuffer *createExtMemBuffer(int32_t inMemSize, int32_t elemSize, SColumnMo * @param pMemBuffer * @return */ -void *destoryExtMemBuffer(tExtMemBuffer *pMemBuffer); +void *destroyExtMemBuffer(tExtMemBuffer *pMemBuffer); /** * @param pMemBuffer diff --git a/src/util/src/textbuffer.c b/src/util/src/textbuffer.c index 8ce090d335..95e7935a62 100644 --- a/src/util/src/textbuffer.c +++ b/src/util/src/textbuffer.c @@ -80,7 +80,7 @@ tExtMemBuffer* createExtMemBuffer(int32_t inMemSize, int32_t elemSize, SColumnMo return pMemBuffer; } -void* destoryExtMemBuffer(tExtMemBuffer *pMemBuffer) { +void* destroyExtMemBuffer(tExtMemBuffer *pMemBuffer) { if (pMemBuffer == NULL) { return NULL; } diff --git a/src/util/src/tpercentile.c b/src/util/src/tpercentile.c index b3c09033b4..e013a2a33a 100644 --- a/src/util/src/tpercentile.c +++ b/src/util/src/tpercentile.c @@ -32,7 +32,7 @@ tExtMemBuffer *releaseBucketsExceptFor(tMemBucket *pMemBucket, int16_t segIdx, i pBuffer = pSeg->pBuffer[j]; } else { if (pSeg->pBuffer && pSeg->pBuffer[j]) { - pSeg->pBuffer[j] = destoryExtMemBuffer(pSeg->pBuffer[j]); + pSeg->pBuffer[j] = destroyExtMemBuffer(pSeg->pBuffer[j]); } } } @@ -338,7 +338,7 @@ void tMemBucketDestroy(tMemBucket *pBucket) { for (int32_t j = 0; j < pSeg->numOfSlots; ++j) { if (pSeg->pBuffer[j] != NULL) { - pSeg->pBuffer[j] = destoryExtMemBuffer(pSeg->pBuffer[j]); + pSeg->pBuffer[j] = destroyExtMemBuffer(pSeg->pBuffer[j]); } } tfree(pSeg->pBuffer); @@ -588,7 +588,7 @@ void releaseBucket(tMemBucket *pMemBucket, int32_t segIdx, int32_t slotIdx) { return; } - pSeg->pBuffer[slotIdx] = destoryExtMemBuffer(pSeg->pBuffer[slotIdx]); + pSeg->pBuffer[slotIdx] = destroyExtMemBuffer(pSeg->pBuffer[slotIdx]); } //////////////////////////////////////////////////////////////////////////////////////////// @@ -853,7 +853,7 @@ double getPercentileImpl(tMemBucket *pMemBucket, int32_t count, double fraction) tMemBucketSegment *pSeg = &pMemBucket->pSegs[tt]; for (int32_t ttx = 0; ttx < pSeg->numOfSlots; ++ttx) { if (pSeg->pBuffer && pSeg->pBuffer[ttx]) { - pSeg->pBuffer[ttx] = destoryExtMemBuffer(pSeg->pBuffer[ttx]); + pSeg->pBuffer[ttx] = destroyExtMemBuffer(pSeg->pBuffer[ttx]); } } } -- GitLab