diff --git a/src/util/inc/tstoken.h b/src/util/inc/tstoken.h index 60a79f69afe8b7521e1869eea8ae0e96f4660487..74687e9c18ada622fadb87ab5e5f0abf22f1580f 100644 --- a/src/util/inc/tstoken.h +++ b/src/util/inc/tstoken.h @@ -120,6 +120,7 @@ static FORCE_INLINE int32_t isValidNumber(const SSQLToken* pToken) { type = TK_FLOAT; goto _end; + break; } case '0': { diff --git a/src/util/src/tarray.c b/src/util/src/tarray.c index b99e722262288014b4eb4cae8252235a2205c099..19225e998a1b2a5fead58b781b448ccf4b604415 100755 --- a/src/util/src/tarray.c +++ b/src/util/src/tarray.c @@ -95,9 +95,6 @@ void* taosArrayGetP(const SArray* pArray, size_t index) { assert(index < pArray->size); void* d = TARRAY_GET_ELEM(pArray, index); - if (d == NULL) { - return NULL; - } return *(void**)d; } diff --git a/src/util/src/tcache.c b/src/util/src/tcache.c index 2b6083a91ccef8ef2a08902117e8f67340ba6a37..7aaa5b91db0f59cc7516b15051ba046153e0d135 100644 --- a/src/util/src/tcache.c +++ b/src/util/src/tcache.c @@ -119,7 +119,7 @@ static FORCE_INLINE void taosCacheReleaseNode(SCacheObj *pCacheObj, SCacheDataNo int32_t size = pNode->size; taosHashRemove(pCacheObj->pHashTable, pNode->key, pNode->keySize); - uTrace("key:%s is removed from cache,total:%d,size:%ldbytes", pNode->key, pCacheObj->totalSize, size); + uTrace("key:%s is removed from cache,total:%" PRId64 ",size:%dbytes", pNode->key, pCacheObj->totalSize, size); if (pCacheObj->freeFp) pCacheObj->freeFp(pNode->data); free(pNode); } @@ -288,7 +288,7 @@ void *taosCachePut(SCacheObj *pCacheObj, const char *key, const void *pData, siz if (NULL != pNode) { pCacheObj->totalSize += pNode->size; - uTrace("key:%s %p added into cache, added:%" PRIu64 ", expire:%" PRIu64 ", total:%d, size:%" PRId64 " bytes", + uTrace("key:%s %p added into cache, added:%" PRIu64 ", expire:%" PRIu64 ", total:%" PRId64 ", size:%" PRId64 " bytes", key, pNode, pNode->addedTime, pNode->expiredTime, pCacheObj->totalSize, dataSize); } else { uError("key:%s failed to added into cache, out of memory", key); @@ -433,7 +433,6 @@ void taosCacheEmpty(SCacheObj *pCacheObj) { __cache_wr_lock(pCacheObj); while (taosHashIterNext(pIter)) { if (pCacheObj->deleting == 1) { - taosHashDestroyIter(pIter); break; } @@ -507,7 +506,7 @@ void taosAddToTrash(SCacheObj *pCacheObj, SCacheDataNode *pNode) { void taosRemoveFromTrashCan(SCacheObj *pCacheObj, STrashElem *pElem) { if (pElem->pData->signature != (uint64_t)pElem->pData) { - uError("key:sig:%d %p data has been released, ignore", pElem->pData->signature, pElem->pData); + uError("key:sig:0x%x %p data has been released, ignore", pElem->pData->signature, pElem->pData); return; } @@ -561,7 +560,6 @@ void taosTrashCanEmpty(SCacheObj *pCacheObj, bool force) { } } - assert(pCacheObj->numOfElemsInTrash >= 0); __cache_unlock(pCacheObj); } diff --git a/src/util/src/tcompression.c b/src/util/src/tcompression.c index e3b3d65052e4d34c9c424b565d084ae123efcac0..b085e26e07177189d2b7d350a82ef779576d3cf2 100644 --- a/src/util/src/tcompression.c +++ b/src/util/src/tcompression.c @@ -551,7 +551,7 @@ int tsDecompressTimestampImp(const char *const input, const int nelements, char delta_of_delta = 0; } else { if (is_bigendian()) { - memcpy(&dd1 + LONG_BYTES - nbytes, input + ipos, nbytes); + memcpy(((char *)(&dd1)) + LONG_BYTES - nbytes, input + ipos, nbytes); } else { memcpy(&dd1, input + ipos, nbytes); } @@ -576,7 +576,7 @@ int tsDecompressTimestampImp(const char *const input, const int nelements, char delta_of_delta = 0; } else { if (is_bigendian()) { - memcpy(&dd2 + LONG_BYTES - nbytes, input + ipos, nbytes); + memcpy(((char *)(&dd2)) + LONG_BYTES - nbytes, input + ipos, nbytes); } else { memcpy(&dd2, input + ipos, nbytes); } diff --git a/src/util/src/tconfig.c b/src/util/src/tconfig.c index 543a84dc44cf3105aee4583bc31882df37702fad..2288035fc7a67edcc11995b69253afbf6fe465c7 100644 --- a/src/util/src/tconfig.c +++ b/src/util/src/tconfig.c @@ -74,7 +74,7 @@ static void taosReadInt32Config(SGlobalCfg *cfg, char *input_value) { *option = value; cfg->cfgStatus = TAOS_CFG_CSTATUS_FILE; } else { - uWarn("config option:%s, input value:%s, is configured by %s, use %s", cfg->option, input_value, + uWarn("config option:%s, input value:%s, is configured by %s, use %d", cfg->option, input_value, tsCfgStatusStr[cfg->cfgStatus], *option); } } @@ -106,7 +106,11 @@ static void taosReadDirectoryConfig(SGlobalCfg *cfg, char *input_value) { } else { if (cfg->cfgStatus <= TAOS_CFG_CSTATUS_FILE) { wordexp_t full_path; - wordexp(input_value, &full_path, 0); + if (0 != wordexp(input_value, &full_path, 0)) { + printf("\nconfig dir: %s wordexp fail! reason:%s\n", input_value, strerror(errno)); + wordfree(&full_path); + return; + } if (full_path.we_wordv != NULL && full_path.we_wordv[0] != NULL) { strcpy(option, full_path.we_wordv[0]); } @@ -240,7 +244,12 @@ void taosReadGlobalLogCfg() { sdbDebugFlag = 135; wordexp_t full_path; - wordexp(configDir, &full_path, 0); + if ( 0 != wordexp(configDir, &full_path, 0)) { + printf("\nconfig file: %s wordexp fail! reason:%s\n", configDir, strerror(errno)); + wordfree(&full_path); + return; + } + if (full_path.we_wordv != NULL && full_path.we_wordv[0] != NULL) { if (strlen(full_path.we_wordv[0]) >= TSDB_FILENAME_LEN) { printf("\nconfig file: %s path overflow max len %d, all variables are set to default\n", full_path.we_wordv[0], TSDB_FILENAME_LEN - 1); diff --git a/src/util/src/tkvstore.c b/src/util/src/tkvstore.c index 88cd446349a351da7855d7fcdfcd2291c830381f..cf5228c072511db29e2d4794c35d1fe2104f1463 100644 --- a/src/util/src/tkvstore.c +++ b/src/util/src/tkvstore.c @@ -537,5 +537,6 @@ static int tdRestoreKVStore(SKVStore *pStore) { _err: tfree(buf); + taosHashDestroyIter(pIter); return -1; } \ No newline at end of file diff --git a/src/util/src/tlog.c b/src/util/src/tlog.c index 01a0eabbca39258951f2e0d6c4e098c7bf009be8..d1fb287184d85a4e6c7c68aa972e7ea39b75614c 100644 --- a/src/util/src/tlog.c +++ b/src/util/src/tlog.c @@ -142,6 +142,10 @@ static void *taosThreadToOpenNewFile(void *param) { umask(0); int32_t fd = open(name, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU | S_IRWXG | S_IRWXO); + if (fd < 0) { + uError("open new log file fail! fd:%d reason:%s", fd, strerror(errno)); + return NULL; + } taosLockFile(fd); lseek(fd, 0, SEEK_SET); @@ -184,7 +188,7 @@ void taosResetLog() { tsLogObj.lines = tsLogObj.maxLines + 10; taosOpenNewLogFile(); - remove(lastName); + (void)remove(lastName); uPrint("=================================="); uPrint(" reset log file "); @@ -279,7 +283,10 @@ static int32_t taosOpenLogFile(char *fn, int32_t maxLines, int32_t maxFileNum) { // only an estimate for number of lines struct stat filestat; - fstat(tsLogObj.logHandle->fd, &filestat); + if (fstat(tsLogObj.logHandle->fd, &filestat) < 0) { + printf("\nfailed to fstat log file:%s, reason:%s\n", name, strerror(errno)); + return -1; + } size = (int32_t)filestat.st_size; tsLogObj.lines = size / 60; diff --git a/src/util/src/tnote.c b/src/util/src/tnote.c index 31ed6e2f7bded579b75066e590c68b8bc8580a3e..5bb120d4c6bfe49fe2ebd16949c5633b6d6d218d 100644 --- a/src/util/src/tnote.c +++ b/src/util/src/tnote.c @@ -214,7 +214,10 @@ int taosOpenNoteWithMaxLines(char *fn, int maxLines, int maxNoteNum, taosNoteInf // only an estimate for number of lines struct stat filestat; - fstat(pNote->taosNoteFd, &filestat); + if (fstat(pNote->taosNoteFd, &filestat) < 0) { + fprintf(stderr, "failed to fstat note file:%s reason:%s\n", name, strerror(errno)); + return -1; + } size = (int)filestat.st_size; pNote->taosNoteLines = size / 60; @@ -226,7 +229,7 @@ int taosOpenNoteWithMaxLines(char *fn, int maxLines, int maxNoteNum, taosNoteInf void taosNotePrint(taosNoteInfo * pNote, const char * const format, ...) { va_list argpointer; - char buffer[MAX_NOTE_LINE_SIZE]; + char buffer[MAX_NOTE_LINE_SIZE+2]; int len; struct tm Tm, *ptm; struct timeval timeSecs; diff --git a/src/util/src/tsocket.c b/src/util/src/tsocket.c index 1f4d57115b2758b9144863a44f0fc49da2c14142..98ed8d1ed761dfc7ec66f66070bf7a5f63871d18 100644 --- a/src/util/src/tsocket.c +++ b/src/util/src/tsocket.c @@ -278,7 +278,7 @@ int taosOpenUdpSocket(uint32_t ip, uint16_t port) { /* bind socket to local address */ if (bind(sockFd, (struct sockaddr *)&localAddr, sizeof(localAddr)) < 0) { uError("failed to bind udp socket: %d (%s), 0x%x:%hu", errno, strerror(errno), ip, port); - taosCloseSocket(sockFd); + close(sockFd); return -1; } @@ -321,7 +321,7 @@ int taosOpenTcpClientSocket(uint32_t destIp, uint16_t destPort, uint32_t clientI if (ret != 0) { //uError("failed to connect socket, ip:0x%x, port:%hu(%s)", destIp, destPort, strerror(errno)); - taosCloseSocket(sockFd); + close(sockFd); sockFd = -1; } diff --git a/src/util/src/ttime.c b/src/util/src/ttime.c index 4dd6360752f4fa67d5269c67589b2b35cbd32b4a..02d72dd1f4539a012bf50b46f94b4a7647d73675 100644 --- a/src/util/src/ttime.c +++ b/src/util/src/ttime.c @@ -72,49 +72,6 @@ void deltaToUtcInitOnce() { return; } -int64_t user_mktime(struct tm * tm) -{ -#define TAOS_MINUTE 60 -#define TAOS_HOUR (60*TAOS_MINUTE) -#define TAOS_DAY (24*TAOS_HOUR) -#define TAOS_YEAR (365*TAOS_DAY) - -static int month[12] = { - 0, - TAOS_DAY*(31), - TAOS_DAY*(31+29), - TAOS_DAY*(31+29+31), - TAOS_DAY*(31+29+31+30), - TAOS_DAY*(31+29+31+30+31), - TAOS_DAY*(31+29+31+30+31+30), - TAOS_DAY*(31+29+31+30+31+30+31), - TAOS_DAY*(31+29+31+30+31+30+31+31), - TAOS_DAY*(31+29+31+30+31+30+31+31+30), - TAOS_DAY*(31+29+31+30+31+30+31+31+30+31), - TAOS_DAY*(31+29+31+30+31+30+31+31+30+31+30) -}; - - int64_t res; - int year; - - year= tm->tm_year - 70; - res= TAOS_YEAR*year + TAOS_DAY*((year+1)/4); - res+= month[tm->tm_mon]; - - if(tm->tm_mon > 1 && ((year+2)%4)) { - res-= TAOS_DAY; - } - - res+= TAOS_DAY*(tm->tm_mday-1); - res+= TAOS_HOUR*tm->tm_hour; - res+= TAOS_MINUTE*tm->tm_min; - res+= tm->tm_sec; - - return res + m_deltaUtc; - -} - - static int64_t parseFraction(char* str, char** end, int32_t timePrec); static int32_t parseTimeWithTz(char* timestr, int64_t* time, int32_t timePrec); static int32_t parseLocaltime(char* timestr, int64_t* time, int32_t timePrec); diff --git a/src/util/src/ttimer.c b/src/util/src/ttimer.c index cdb2c6c0beb5ea0223fb077dde20c08a5966a294..f7acc1132de674e7a33cc4e1c3de4c786c3c1612 100644 --- a/src/util/src/ttimer.c +++ b/src/util/src/ttimer.c @@ -139,7 +139,7 @@ static void unlockTimerList(timer_list_t* list) { int64_t tid = taosGetPthreadId(); if (atomic_val_compare_exchange_64(&(list->lockedBy), tid, 0) != tid) { assert(false); - tmrError("%d trying to unlock a timer list not locked by current thread.", tid); + tmrError("%" PRId64 " trying to unlock a timer list not locked by current thread.", tid); } } @@ -290,6 +290,7 @@ static void addToExpired(tmr_obj_t* head) { SSchedMsg schedMsg; schedMsg.fp = NULL; schedMsg.tfp = processExpiredTimer; + schedMsg.msg = NULL; schedMsg.ahandle = head; schedMsg.thandle = NULL; taosScheduleTask(tmrQhandle, &schedMsg); @@ -513,14 +514,17 @@ static void taosTmrModuleInit(void) { tmrError("failed to create the mutex for wheel, reason:%s", strerror(errno)); return; } + pthread_mutex_lock(&wheel->mutex); wheel->nextScanAt = now + wheel->resolution; wheel->index = 0; wheel->slots = (tmr_obj_t**)calloc(wheel->size, sizeof(tmr_obj_t*)); if (wheel->slots == NULL) { tmrError("failed to allocate wheel slots"); + pthread_mutex_unlock(&wheel->mutex); return; } timerMap.size += wheel->size; + pthread_mutex_unlock(&wheel->mutex); } timerMap.count = 0; diff --git a/src/util/src/tutil.c b/src/util/src/tutil.c index 92091174153d6645474f906d3cdb09243db4455f..3b92cf21ee88003c48ee1e91587cac36ec17dcfd 100644 --- a/src/util/src/tutil.c +++ b/src/util/src/tutil.c @@ -557,7 +557,7 @@ bool taosGetVersionNumber(char *versionStr, int *versionNubmer) { return false; } - int versionNumberPos[4] = {0}; + int versionNumberPos[5] = {0}; int len = strlen(versionStr); int dot = 0; for (int pos = 0; pos < len && dot < 4; ++pos) { @@ -709,7 +709,7 @@ void taosRemoveDir(char *rootDir) { if (de->d_type & DT_DIR) { taosRemoveDir(filename); } else { - remove(filename); + (void)remove(filename); uPrint("file:%s is removed", filename); } }