Merge pull request #27916 from taosdata/fix/3.0/TD-32137

fix:[TD-32137] Avoid double free when error occurs.
This commit is contained in:
Pan Wei 2024-09-18 14:00:04 +08:00 committed by GitHub
commit d6fbb3dc2a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 6 deletions

View File

@ -2866,32 +2866,35 @@ _return:
}
int32_t filterConvertGroupFromArray(SFilterInfo *info, SArray *group) {
size_t groupSize = taosArrayGetSize(group);
size_t groupSize = taosArrayGetSize(group);
int32_t code = TSDB_CODE_SUCCESS;
info->groupNum = (uint32_t)groupSize;
if (info->groupNum > 0) {
info->groups = taosMemoryCalloc(info->groupNum, sizeof(*info->groups));
if (info->groups == NULL) {
info->groupNum = 0;
FLT_ERR_RET(terrno);
FLT_ERR_JRET(terrno);
}
}
for (size_t i = 0; i < groupSize; ++i) {
SFilterGroup *pg = taosArrayGet(group, i);
if (NULL == pg) {
FLT_ERR_RET(TSDB_CODE_OUT_OF_RANGE);
FLT_ERR_JRET(TSDB_CODE_OUT_OF_RANGE);
}
pg->unitFlags = taosMemoryCalloc(pg->unitNum, sizeof(*pg->unitFlags));
if (pg->unitFlags == NULL) {
pg->unitNum = 0;
FLT_ERR_RET(terrno);
FLT_ERR_JRET(terrno);
}
info->groups[i] = *pg;
}
return TSDB_CODE_SUCCESS;
_return:
info->groupNum = 0;
return code;
}
int32_t filterRewrite(SFilterInfo *info, SFilterGroupCtx **gRes, int32_t gResNum) {