diff --git a/src/os/inc/osMemory.h b/src/os/inc/osMemory.h index 83bc33cac577fcee0ef12806fcf5ac29ba64e75f..e3280097707c5729540f33de40be8b40386781ab 100644 --- a/src/os/inc/osMemory.h +++ b/src/os/inc/osMemory.h @@ -101,7 +101,10 @@ void tdminit(); #define TDMALLOC(s) tdmalloc(__FILE__, __LINE__, s,0) #define TDMCALLOC(s) tdmalloc(__FILE__, __LINE__, s,1) #define TDMREALLOC(p,s) tdmrealloc(p,s) -#define TDMFREE(p) tdmfree((void *)p) +#define TDMFREE(p) do { if(p) \ + {tdmfree((void *)p); \ + p = 0; } \ + } while (0) #ifdef __cplusplus diff --git a/src/os/src/detail/osMemory.c b/src/os/src/detail/osMemory.c index 4fe4fb85e70fc3c29dc5d4c0884927490088e842..49b5e30be469feded340c63bf5f3a51a6a2ec979 100644 --- a/src/os/src/detail/osMemory.c +++ b/src/os/src/detail/osMemory.c @@ -624,7 +624,7 @@ void tdmfree(void *p){ memset((void *)((long)p-24), 0, 24); free(fp); fp=0; - }else{ + }else if(p){ //printf("direct free %p\n", p); atomic_add_fetch_64(&tdm_stat.normalfn, 1); free(p); diff --git a/src/query/src/qExecutor.c b/src/query/src/qExecutor.c index feba941b81e03bb66351f28649937b3ad99d4619..65b07e3754351e896a0ca532270eacd856b18a2c 100644 --- a/src/query/src/qExecutor.c +++ b/src/query/src/qExecutor.c @@ -6820,7 +6820,7 @@ static void freeColumnFilterInfo(SColumnFilterInfo* pFilter, int32_t numOfFilter for (int32_t i = 0; i < numOfFilters; i++) { if (pFilter[i].filterstr) { - TDMFREE((void*)(pFilter[i].pz)); + TDMFREE(pFilter[i].pz); } } @@ -7717,4 +7717,4 @@ void** qReleaseQInfo(void* pMgmt, void* pQInfo, bool freeHandle) { taosCacheRelease(pQueryMgmt->qinfoPool, pQInfo, freeHandle); return 0; -} \ No newline at end of file +}