提交 1fde9881 编写于 作者: H Hongze Cheng

refact and fix some bugs

上级 97d26ef1
...@@ -50,6 +50,7 @@ void tCoderClear(SCoder* pCoder) { ...@@ -50,6 +50,7 @@ void tCoderClear(SCoder* pCoder) {
int tStartEncode(SCoder* pCoder) { int tStartEncode(SCoder* pCoder) {
struct SCoderNode* pNode; struct SCoderNode* pNode;
ASSERT(pCoder->type == TD_ENCODER);
if (pCoder->data) { if (pCoder->data) {
if (pCoder->size - pCoder->pos < sizeof(int32_t)) return -1; if (pCoder->size - pCoder->pos < sizeof(int32_t)) return -1;
...@@ -75,6 +76,7 @@ void tEndEncode(SCoder* pCoder) { ...@@ -75,6 +76,7 @@ void tEndEncode(SCoder* pCoder) {
struct SCoderNode* pNode; struct SCoderNode* pNode;
int32_t len; int32_t len;
ASSERT(pCoder->type == TD_ENCODER);
if (pCoder->data) { if (pCoder->data) {
pNode = TD_SLIST_HEAD(&(pCoder->stack)); pNode = TD_SLIST_HEAD(&(pCoder->stack));
ASSERT(pNode); ASSERT(pNode);
...@@ -92,7 +94,7 @@ void tEndEncode(SCoder* pCoder) { ...@@ -92,7 +94,7 @@ void tEndEncode(SCoder* pCoder) {
tRPut32(pCoder->data + pCoder->pos, len); tRPut32(pCoder->data + pCoder->pos, len);
} }
TD_CODER_MOVE_POS(pCoder, len); TD_CODER_MOVE_POS(pCoder, len + sizeof(int32_t));
free(pNode); free(pNode);
} }
...@@ -102,6 +104,7 @@ int tStartDecode(SCoder* pCoder) { ...@@ -102,6 +104,7 @@ int tStartDecode(SCoder* pCoder) {
int32_t len; int32_t len;
struct SCoderNode* pNode; struct SCoderNode* pNode;
ASSERT(pCoder->type == TD_DECODER);
if (tDecodeI32(pCoder, &len) < 0) return -1; if (tDecodeI32(pCoder, &len) < 0) return -1;
pNode = malloc(sizeof(*pNode)); pNode = malloc(sizeof(*pNode));
...@@ -121,10 +124,11 @@ int tStartDecode(SCoder* pCoder) { ...@@ -121,10 +124,11 @@ int tStartDecode(SCoder* pCoder) {
} }
void tEndDecode(SCoder* pCoder) { void tEndDecode(SCoder* pCoder) {
ASSERT(tDecodeIsEnd(pCoder));
struct SCoderNode* pNode; struct SCoderNode* pNode;
ASSERT(pCoder->type == TD_DECODER);
ASSERT(tDecodeIsEnd(pCoder));
pNode = TD_SLIST_HEAD(&(pCoder->stack)); pNode = TD_SLIST_HEAD(&(pCoder->stack));
ASSERT(pNode); ASSERT(pNode);
TD_SLIST_POP(&(pCoder->stack)); TD_SLIST_POP(&(pCoder->stack));
......
...@@ -305,7 +305,7 @@ static int tSFinalReq_v1_decode(SCoder *pCoder, SFinalReq_v1 *ps1) { ...@@ -305,7 +305,7 @@ static int tSFinalReq_v1_decode(SCoder *pCoder, SFinalReq_v1 *ps1) {
if (tDecodeI32(pCoder, &ps1->v_a) < 0) return -1; if (tDecodeI32(pCoder, &ps1->v_a) < 0) return -1;
if (tDecodeI8(pCoder, &ps1->v_b) < 0) return -1; if (tDecodeI8(pCoder, &ps1->v_b) < 0) return -1;
tEndEncode(pCoder); tEndDecode(pCoder);
return 0; return 0;
} }
...@@ -346,7 +346,7 @@ static int tSFinalReq_v2_decode(SCoder *pCoder, SFinalReq_v2 *ps2) { ...@@ -346,7 +346,7 @@ static int tSFinalReq_v2_decode(SCoder *pCoder, SFinalReq_v2 *ps2) {
if (tDecodeI16(pCoder, &ps2->v_c) < 0) return -1; if (tDecodeI16(pCoder, &ps2->v_c) < 0) return -1;
} }
tEndEncode(pCoder); tEndDecode(pCoder);
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册