[TD-15] sdb may crash while received close signal

This commit is contained in:
slguan 2020-03-24 15:34:22 +08:00
parent 6d35e62081
commit c541d35462
1 changed files with 7 additions and 5 deletions

View File

@ -722,18 +722,20 @@ int32_t sdbUpdateRow(SSdbOperDesc *pOper) {
void sdbCloseTable(void *handle) { void sdbCloseTable(void *handle) {
SSdbTable *pTable = (SSdbTable *)handle; SSdbTable *pTable = (SSdbTable *)handle;
void * pNode = NULL; void * pNode = NULL;
void * row;
if (pTable == NULL) return; if (pTable == NULL) return;
while (1) { while (1) {
pNode = sdbFetchRow(handle, pNode, &row); SRowMeta * pMeta;
if (row == NULL) break; pNode = (*sdbFetchRowFp[pTable->keyType])(pTable->iHandle, pNode, (void **)&pMeta);
if (pMeta == NULL) break;
SSdbOperDesc oper = { SSdbOperDesc oper = {
.pObj = pMeta->row,
.table = pTable, .table = pTable,
.rowData = row, .version = pMeta->version,
}; };
(*pTable->destroyFp)(&oper); (*pTable->destroyFp)(&oper);
} }