fix:[TD-32137] Avoid double free when error occurs.

This commit is contained in:
Jing Sima 2024-09-18 11:15:12 +08:00
parent eb32a41c29
commit 5096f8008a
1 changed files with 9 additions and 6 deletions

View File

@ -2867,31 +2867,34 @@ _return:
int32_t filterConvertGroupFromArray(SFilterInfo *info, SArray *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) {