[TD-5504]<fix>fix tsdbRestoreLastColumns run time bug:memory heap overflow
This commit is contained in:
parent
f5758a29da
commit
dce3de680f
|
@ -722,7 +722,8 @@ static int tsdbRestoreLastColumns(STsdbRepo *pRepo, STable *pTable, SReadH* pRea
|
||||||
// OK,let's load row from backward to get not-null column
|
// OK,let's load row from backward to get not-null column
|
||||||
for (int32_t rowId = pBlock->numOfRows - 1; rowId >= 0; rowId--) {
|
for (int32_t rowId = pBlock->numOfRows - 1; rowId >= 0; rowId--) {
|
||||||
SDataCol *pDataCol = pReadh->pDCols[0]->cols + i;
|
SDataCol *pDataCol = pReadh->pDCols[0]->cols + i;
|
||||||
tdAppendColVal(memRowDataBody(row), tdGetColDataOfRow(pDataCol, rowId), pCol->type, pCol->offset);
|
const void* pColData = tdGetColDataOfRow(pDataCol, rowId);
|
||||||
|
tdAppendColVal(memRowDataBody(row), pColData, pCol->type, pCol->offset);
|
||||||
//SDataCol *pDataCol = readh.pDCols[0]->cols + j;
|
//SDataCol *pDataCol = readh.pDCols[0]->cols + j;
|
||||||
void *value = tdGetRowDataOfCol(memRowDataBody(row), (int8_t)pCol->type, TD_DATA_ROW_HEAD_SIZE + pCol->offset);
|
void *value = tdGetRowDataOfCol(memRowDataBody(row), (int8_t)pCol->type, TD_DATA_ROW_HEAD_SIZE + pCol->offset);
|
||||||
if (isNull(value, pCol->type)) {
|
if (isNull(value, pCol->type)) {
|
||||||
|
@ -735,7 +736,7 @@ static int tsdbRestoreLastColumns(STsdbRepo *pRepo, STable *pTable, SReadH* pRea
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// save not-null column
|
// save not-null column
|
||||||
uint16_t bytes = IS_VAR_DATA_TYPE(pCol->type) ? varDataTLen(tdGetColDataOfRow(pDataCol, rowId)) : TYPE_BYTES[pCol->type];
|
uint16_t bytes = IS_VAR_DATA_TYPE(pCol->type) ? varDataTLen(pColData) : pCol->bytes;
|
||||||
SDataCol *pLastCol = &(pTable->lastCols[idx]);
|
SDataCol *pLastCol = &(pTable->lastCols[idx]);
|
||||||
pLastCol->pData = malloc(bytes);
|
pLastCol->pData = malloc(bytes);
|
||||||
pLastCol->bytes = bytes;
|
pLastCol->bytes = bytes;
|
||||||
|
|
Loading…
Reference in New Issue