diff --git a/source/dnode/vnode/src/sma/smaRollup.c b/source/dnode/vnode/src/sma/smaRollup.c index 15c007d393..8c12f80f2b 100644 --- a/source/dnode/vnode/src/sma/smaRollup.c +++ b/source/dnode/vnode/src/sma/smaRollup.c @@ -931,6 +931,7 @@ static int32_t tdAcquireRSmaInfoBySuid(SSma *pSma, int64_t suid, SRSmaInfo **ppR if (ASSERTS(pRSmaInfo->suid == suid, "suid:%" PRIi64 " != %" PRIi64, pRSmaInfo->suid, suid)) { TAOS_RETURN(TSDB_CODE_APP_ERROR); } + *ppRSmaInfo = pRSmaInfo; TAOS_RETURN(code); } taosRUnLockLatch(SMA_ENV_LOCK(pEnv)); diff --git a/source/dnode/vnode/src/tsdb/tsdbFS2.c b/source/dnode/vnode/src/tsdb/tsdbFS2.c index ca99b0eaff..68954e5156 100644 --- a/source/dnode/vnode/src/tsdb/tsdbFS2.c +++ b/source/dnode/vnode/src/tsdb/tsdbFS2.c @@ -524,7 +524,7 @@ static int32_t tsdbFSDoSanAndFix(STFileSystem *fs) { { // clear unreferenced files STfsDir *dir = NULL; - TAOS_CHECK_GOTO(tfsOpendir(fs->tsdb->pVnode->pTfs, fs->tsdb->path, &dir), &lino, _close_dir); + TAOS_CHECK_GOTO(tfsOpendir(fs->tsdb->pVnode->pTfs, fs->tsdb->path, &dir), &lino, _exit); STFileHash fobjHash = {0}; code = tsdbFSCreateFileObjHash(fs, &fobjHash); diff --git a/source/libs/tfs/src/tfs.c b/source/libs/tfs/src/tfs.c index 07c1fab54f..7656e3067a 100644 --- a/source/libs/tfs/src/tfs.c +++ b/source/libs/tfs/src/tfs.c @@ -440,7 +440,10 @@ int32_t tfsOpendir(STfs *pTfs, const char *rname, STfsDir **ppDir) { TAOS_CHECK_GOTO(tfsOpendirImpl(pTfs, pDir), NULL, _exit); _exit: - taosMemoryFree(pDir); + if (code != 0) { + taosMemoryFreeClear(pDir); + } + *ppDir = pDir; TAOS_RETURN(code); } @@ -634,9 +637,13 @@ static int32_t tfsGetDiskByName(STfs *pTfs, const char *dir, STfsDisk **ppDisk) static int32_t tfsOpendirImpl(STfs *pTfs, STfsDir *pTfsDir) { STfsDisk *pDisk = NULL; char adir[TMPNAME_LEN * 2] = "\0"; + int32_t code = 0; if (pTfsDir->pDir != NULL) { - taosCloseDir(&pTfsDir->pDir); + if ((code = taosCloseDir(&pTfsDir->pDir)) != 0) { + fError("%s failed to close dir since %s", __func__, tstrerror(code)); + TAOS_RETURN(code); + } pTfsDir->pDir = NULL; }