fix: invalid free issue
This commit is contained in:
parent
d70e32e7d3
commit
80586ad997
|
@ -573,6 +573,7 @@ struct STSDBRowIter {
|
||||||
struct SRowMerger {
|
struct SRowMerger {
|
||||||
STSchema *pTSchema;
|
STSchema *pTSchema;
|
||||||
int64_t version;
|
int64_t version;
|
||||||
|
bool merged;
|
||||||
SArray *pArray; // SArray<SColVal>
|
SArray *pArray; // SArray<SColVal>
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -776,10 +776,12 @@ _exit:
|
||||||
}
|
}
|
||||||
|
|
||||||
void tRowMergerClear(SRowMerger *pMerger) {
|
void tRowMergerClear(SRowMerger *pMerger) {
|
||||||
for (int32_t iCol = 1; iCol < pMerger->pTSchema->numOfCols; iCol++) {
|
if (pMerger->merged) {
|
||||||
SColVal *pTColVal = taosArrayGet(pMerger->pArray, iCol);
|
for (int32_t iCol = 1; iCol < pMerger->pTSchema->numOfCols; iCol++) {
|
||||||
if (IS_VAR_DATA_TYPE(pTColVal->type)) {
|
SColVal *pTColVal = taosArrayGet(pMerger->pArray, iCol);
|
||||||
tFree(pTColVal->value.pData);
|
if (IS_VAR_DATA_TYPE(pTColVal->type)) {
|
||||||
|
tFree(pTColVal->value.pData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -801,6 +803,7 @@ int32_t tRowMerge(SRowMerger *pMerger, TSDBROW *pRow) {
|
||||||
if (IS_VAR_DATA_TYPE(pColVal->type)) {
|
if (IS_VAR_DATA_TYPE(pColVal->type)) {
|
||||||
SColVal *pTColVal = taosArrayGet(pMerger->pArray, iCol);
|
SColVal *pTColVal = taosArrayGet(pMerger->pArray, iCol);
|
||||||
|
|
||||||
|
pTColVal->value.pData = NULL;
|
||||||
code = tRealloc(&pTColVal->value.pData, pColVal->value.nData);
|
code = tRealloc(&pTColVal->value.pData, pColVal->value.nData);
|
||||||
if (code) goto _exit;
|
if (code) goto _exit;
|
||||||
|
|
||||||
|
@ -821,6 +824,7 @@ int32_t tRowMerge(SRowMerger *pMerger, TSDBROW *pRow) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pMerger->version = key.version;
|
pMerger->version = key.version;
|
||||||
|
pMerger->merged = true;
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
return code;
|
return code;
|
||||||
|
|
Loading…
Reference in New Issue