fix: double decompress issue and memory leak issue

This commit is contained in:
dapan1121 2023-05-15 10:13:20 +08:00
parent 3ca5559b37
commit 198be9a7a6
3 changed files with 5 additions and 2 deletions

View File

@ -97,7 +97,8 @@ static int32_t hbProcessDBInfoRsp(void *value, int32_t valueLen, struct SCatalog
SDbHbBatchRsp batchRsp = {0}; SDbHbBatchRsp batchRsp = {0};
if (tDeserializeSDbHbBatchRsp(value, valueLen, &batchRsp) != 0) { if (tDeserializeSDbHbBatchRsp(value, valueLen, &batchRsp) != 0) {
terrno = TSDB_CODE_INVALID_MSG; terrno = TSDB_CODE_INVALID_MSG;
return -1; code = terrno;
goto _return;
} }
int32_t numOfBatchs = taosArrayGetSize(batchRsp.pArray); int32_t numOfBatchs = taosArrayGetSize(batchRsp.pArray);

View File

@ -236,6 +236,7 @@ void ctgFreeTbCache(SCtgDBCache* dbCache) {
} }
void ctgFreeVgInfoCache(SCtgDBCache* dbCache) { freeVgInfo(dbCache->vgCache.vgInfo); } void ctgFreeVgInfoCache(SCtgDBCache* dbCache) { freeVgInfo(dbCache->vgCache.vgInfo); }
void ctgFreeCfgInfoCache(SCtgDBCache* dbCache) { freeDbCfgInfo(dbCache->cfgCache.cfgInfo); }
void ctgFreeDbCache(SCtgDBCache* dbCache) { void ctgFreeDbCache(SCtgDBCache* dbCache) {
if (NULL == dbCache) { if (NULL == dbCache) {
@ -243,6 +244,7 @@ void ctgFreeDbCache(SCtgDBCache* dbCache) {
} }
ctgFreeVgInfoCache(dbCache); ctgFreeVgInfoCache(dbCache);
ctgFreeCfgInfoCache(dbCache);
ctgFreeStbMetaCache(dbCache); ctgFreeStbMetaCache(dbCache);
ctgFreeTbCache(dbCache); ctgFreeTbCache(dbCache);
} }

View File

@ -916,7 +916,7 @@ FORCE_INLINE uint64_t decodeDoubleValue(const char *const input, int32_t *const
uint64_t diff = 0ul; uint64_t diff = 0ul;
int32_t nbytes = (flag & 0x7) + 1; int32_t nbytes = (flag & 0x7) + 1;
for (int32_t i = 0; i < nbytes; i++) { for (int32_t i = 0; i < nbytes; i++) {
diff |= (((uint64_t)0xffff & input[(*ipos)++]) << BITS_PER_BYTE * i); diff |= (((uint64_t)0xff & input[(*ipos)++]) << BITS_PER_BYTE * i);
} }
int32_t shift_width = (LONG_BYTES * BITS_PER_BYTE - nbytes * BITS_PER_BYTE) * (flag >> 3); int32_t shift_width = (LONG_BYTES * BITS_PER_BYTE - nbytes * BITS_PER_BYTE) * (flag >> 3);
diff <<= shift_width; diff <<= shift_width;