fix: fix coverity issues

This commit is contained in:
dapan1121 2022-10-19 09:35:03 +08:00
parent 53e73511b5
commit c49179eac9
1 changed files with 22 additions and 1 deletions

View File

@ -26,19 +26,25 @@ static void *taosProcessSchedQueue(void *param);
static void taosDumpSchedulerStatus(void *qhandle, void *tmrId); static void taosDumpSchedulerStatus(void *qhandle, void *tmrId);
void *taosInitScheduler(int32_t queueSize, int32_t numOfThreads, const char *label, SSchedQueue *pSched) { void *taosInitScheduler(int32_t queueSize, int32_t numOfThreads, const char *label, SSchedQueue *pSched) {
bool schedMalloced = false;
if (NULL == pSched) { if (NULL == pSched) {
pSched = (SSchedQueue *)taosMemoryCalloc(sizeof(SSchedQueue), 1); pSched = (SSchedQueue *)taosMemoryCalloc(sizeof(SSchedQueue), 1);
if (pSched == NULL) { if (pSched == NULL) {
uError("%s: no enough memory for pSched", label); uError("%s: no enough memory for pSched", label);
return NULL; return NULL;
} }
schedMalloced = true;
} }
pSched->queue = (SSchedMsg *)taosMemoryCalloc(sizeof(SSchedMsg), queueSize); pSched->queue = (SSchedMsg *)taosMemoryCalloc(sizeof(SSchedMsg), queueSize);
if (pSched->queue == NULL) { if (pSched->queue == NULL) {
uError("%s: no enough memory for queue", label); uError("%s: no enough memory for queue", label);
taosCleanUpScheduler(pSched); taosCleanUpScheduler(pSched);
if (schedMalloced) {
taosMemoryFree(pSched); taosMemoryFree(pSched);
}
return NULL; return NULL;
} }
@ -46,6 +52,9 @@ void *taosInitScheduler(int32_t queueSize, int32_t numOfThreads, const char *lab
if (pSched->qthread == NULL) { if (pSched->qthread == NULL) {
uError("%s: no enough memory for qthread", label); uError("%s: no enough memory for qthread", label);
taosCleanUpScheduler(pSched); taosCleanUpScheduler(pSched);
if (schedMalloced) {
taosMemoryFree(pSched);
}
return NULL; return NULL;
} }
@ -58,18 +67,27 @@ void *taosInitScheduler(int32_t queueSize, int32_t numOfThreads, const char *lab
if (taosThreadMutexInit(&pSched->queueMutex, NULL) < 0) { if (taosThreadMutexInit(&pSched->queueMutex, NULL) < 0) {
uError("init %s:queueMutex failed(%s)", label, strerror(errno)); uError("init %s:queueMutex failed(%s)", label, strerror(errno));
taosCleanUpScheduler(pSched); taosCleanUpScheduler(pSched);
if (schedMalloced) {
taosMemoryFree(pSched);
}
return NULL; return NULL;
} }
if (tsem_init(&pSched->emptySem, 0, (uint32_t)pSched->queueSize) != 0) { if (tsem_init(&pSched->emptySem, 0, (uint32_t)pSched->queueSize) != 0) {
uError("init %s:empty semaphore failed(%s)", label, strerror(errno)); uError("init %s:empty semaphore failed(%s)", label, strerror(errno));
taosCleanUpScheduler(pSched); taosCleanUpScheduler(pSched);
if (schedMalloced) {
taosMemoryFree(pSched);
}
return NULL; return NULL;
} }
if (tsem_init(&pSched->fullSem, 0, 0) != 0) { if (tsem_init(&pSched->fullSem, 0, 0) != 0) {
uError("init %s:full semaphore failed(%s)", label, strerror(errno)); uError("init %s:full semaphore failed(%s)", label, strerror(errno));
taosCleanUpScheduler(pSched); taosCleanUpScheduler(pSched);
if (schedMalloced) {
taosMemoryFree(pSched);
}
return NULL; return NULL;
} }
@ -83,6 +101,9 @@ void *taosInitScheduler(int32_t queueSize, int32_t numOfThreads, const char *lab
if (code != 0) { if (code != 0) {
uError("%s: failed to create rpc thread(%s)", label, strerror(errno)); uError("%s: failed to create rpc thread(%s)", label, strerror(errno));
taosCleanUpScheduler(pSched); taosCleanUpScheduler(pSched);
if (schedMalloced) {
taosMemoryFree(pSched);
}
return NULL; return NULL;
} }
++pSched->numOfThreads; ++pSched->numOfThreads;