From c34cfa46d1642127a1be2c640c33ba6d2c4dee83 Mon Sep 17 00:00:00 2001 From: dapan1121 Date: Wed, 23 Dec 2020 10:41:47 +0000 Subject: [PATCH] fix bug --- src/client/src/tscSql.c | 20 +++++++++++--------- src/util/inc/tref.h | 2 ++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/client/src/tscSql.c b/src/client/src/tscSql.c index 9ad38e3360..bb0d8005c2 100644 --- a/src/client/src/tscSql.c +++ b/src/client/src/tscSql.c @@ -284,16 +284,18 @@ void taos_close(TAOS *taos) { return; } - SSqlObj* pHb = (SSqlObj*)taosAcquireRef(tscObjRef, pObj->hbrid); - if (pHb != NULL) { - if (pHb->rpcRid > 0) { // wait for rsp from dnode - rpcCancelRequest(pHb->rpcRid); - pHb->rpcRid = -1; - } + if (RID_VALID(pObj->hbrid)) { + SSqlObj* pHb = (SSqlObj*)taosAcquireRef(tscObjRef, pObj->hbrid); + if (pHb != NULL) { + if (RID_VALID(pHb->rpcRid)) { // wait for rsp from dnode + rpcCancelRequest(pHb->rpcRid); + pHb->rpcRid = -1; + } - tscDebug("%p HB is freed", pHb); - taosReleaseRef(tscObjRef, pHb->self); - taos_free_result(pHb); + tscDebug("%p HB is freed", pHb); + taosReleaseRef(tscObjRef, pHb->self); + taos_free_result(pHb); + } } tscDebug("%p all sqlObj are freed, free tscObj and close dnodeConn:%p", pObj, pObj->pDnodeConn); diff --git a/src/util/inc/tref.h b/src/util/inc/tref.h index cd5092f30a..085c10c551 100644 --- a/src/util/inc/tref.h +++ b/src/util/inc/tref.h @@ -52,6 +52,8 @@ void *taosIterateRef(int rsetId, int64_t rid); // return the number of references in system int taosListRef(); +#define RID_VALID(x) ((x) > 0) + /* sample code to iterate the refs void demoIterateRefs(int rsetId) { -- GitLab