From 9eae52e1f6527a594fb11a6b09965142bd438799 Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Sun, 8 Mar 2020 22:19:41 +0800 Subject: [PATCH 1/3] refactor the array list function --- src/util/inc/tarray.h | 18 +++++++++++++----- src/util/src/tarray.c | 39 +++++++++++++++++++++++++++++---------- 2 files changed, 42 insertions(+), 15 deletions(-) diff --git a/src/util/inc/tarray.h b/src/util/inc/tarray.h index 62cb1a23f8..244849a1ed 100644 --- a/src/util/inc/tarray.h +++ b/src/util/inc/tarray.h @@ -56,7 +56,7 @@ void* taosArrayPush(SArray* pArray, void* pData); void taosArrayPop(SArray* pArray); /** - * + * get the data from array * @param pArray * @param index * @return @@ -64,25 +64,33 @@ void taosArrayPop(SArray* pArray); void* taosArrayGet(SArray* pArray, size_t index); /** - * + * get the pointer data from the array + * @param pArray + * @param index + * @return + */ +void* taosArrayGetP(SArray* pArray, size_t index); + +/** + * return the size of array * @param pArray * @return */ size_t taosArrayGetSize(SArray* pArray); /** - * + * insert data into array * @param pArray * @param index * @param pData */ -void taosArrayInsert(SArray* pArray, int32_t index, void* pData); +void* taosArrayInsert(SArray* pArray, size_t index, void* pData); /** * * @param pArray */ -void taosArrayDestory(SArray* pArray); +void taosArrayDestroy(SArray* pArray); #ifdef __cplusplus } diff --git a/src/util/src/tarray.c b/src/util/src/tarray.c index 017c5422c1..ba553cd86b 100755 --- a/src/util/src/tarray.c +++ b/src/util/src/tarray.c @@ -38,15 +38,15 @@ void* taosArrayInit(size_t size, size_t elemSize) { return pArray; } -static void taosArrayResize(SArray* pArray) { +static int32_t taosArrayResize(SArray* pArray) { assert(pArray->size >= pArray->capacity); size_t size = pArray->capacity; size = (size << 1u); void* tmp = realloc(pArray->pData, size * pArray->elemSize); - if (tmp == NULL) { - // todo + if (tmp == NULL) { // reallocate failed, the original buffer remains + return -1; } pArray->pData = tmp; @@ -59,7 +59,12 @@ void* taosArrayPush(SArray* pArray, void* pData) { } if (pArray->size >= pArray->capacity) { - taosArrayResize(pArray); + int32_t ret = taosArrayResize(pArray); + + // failed to push data into buffer due to the failure of memory allocation + if (ret != 0) { + return NULL; + } } void* dst = TARRAY_GET_ELEM(pArray, pArray->size); @@ -82,20 +87,32 @@ void* taosArrayGet(SArray* pArray, size_t index) { return TARRAY_GET_ELEM(pArray, index); } +void* taosArrayGetP(SArray* pArray, size_t index) { + void* ret = taosArrayGet(pArray, index); + if (ret == NULL) { + return NULL; + } + + return *(void**)ret; +} + size_t taosArrayGetSize(SArray* pArray) { return pArray->size; } -void taosArrayInsert(SArray* pArray, int32_t index, void* pData) { +void* taosArrayInsert(SArray* pArray, size_t index, void* pData) { if (pArray == NULL || pData == NULL) { - return; + return NULL; } if (index >= pArray->size) { - taosArrayPush(pArray, pData); - return; + return taosArrayPush(pArray, pData); } if (pArray->size >= pArray->capacity) { - taosArrayResize(pArray); + int32_t ret = taosArrayResize(pArray); + + if (ret < 0) { + return NULL; + } } void* dst = TARRAY_GET_ELEM(pArray, index); @@ -105,9 +122,11 @@ void taosArrayInsert(SArray* pArray, int32_t index, void* pData) { memcpy(dst, pData, pArray->elemSize); pArray->size += 1; + + return dst; } -void taosArrayDestory(SArray* pArray) { +void taosArrayDestroy(SArray* pArray) { if (pArray == NULL) { return; } From 993adc9d2ee3521dbc7820eff9ff743a9a1e373c Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Sun, 8 Mar 2020 22:32:23 +0800 Subject: [PATCH 2/3] suppress warnings --- src/util/src/tarray.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/util/src/tarray.c b/src/util/src/tarray.c index ba553cd86b..4ed2da0567 100755 --- a/src/util/src/tarray.c +++ b/src/util/src/tarray.c @@ -51,6 +51,8 @@ static int32_t taosArrayResize(SArray* pArray) { pArray->pData = tmp; pArray->capacity = size; + + return 0; } void* taosArrayPush(SArray* pArray, void* pData) { From f5c1a5cb853c71318d134ee7fd88bd7bd6ce3dda Mon Sep 17 00:00:00 2001 From: hjxilinx Date: Sun, 8 Mar 2020 23:02:04 +0800 Subject: [PATCH 3/3] add returned value --- src/dnode/src/dnodeMgmt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dnode/src/dnodeMgmt.c b/src/dnode/src/dnodeMgmt.c index 8712b3a692..c3192caa65 100644 --- a/src/dnode/src/dnodeMgmt.c +++ b/src/dnode/src/dnodeMgmt.c @@ -50,6 +50,7 @@ static void (*dnodeProcessMgmtMsgFp[TSDB_MSG_TYPE_MAX])(SRpcMsg *pMsg); int dnodeInitMgmt() { dnodeProcessMgmtMsgFp[TSDB_MSG_TYPE_FREE_VNODE] = dnodeProcessDropVnodeMsg; + return 0; } void dnodeCleanupMgmt() {