refact and fix some bugs

This commit is contained in:
Hongze Cheng 2022-01-03 10:02:21 +00:00
parent 97d26ef10d
commit 1fde98815b
2 changed files with 9 additions and 5 deletions

View File

@ -50,6 +50,7 @@ void tCoderClear(SCoder* pCoder) {
int tStartEncode(SCoder* pCoder) {
struct SCoderNode* pNode;
ASSERT(pCoder->type == TD_ENCODER);
if (pCoder->data) {
if (pCoder->size - pCoder->pos < sizeof(int32_t)) return -1;
@ -75,6 +76,7 @@ void tEndEncode(SCoder* pCoder) {
struct SCoderNode* pNode;
int32_t len;
ASSERT(pCoder->type == TD_ENCODER);
if (pCoder->data) {
pNode = TD_SLIST_HEAD(&(pCoder->stack));
ASSERT(pNode);
@ -92,7 +94,7 @@ void tEndEncode(SCoder* pCoder) {
tRPut32(pCoder->data + pCoder->pos, len);
}
TD_CODER_MOVE_POS(pCoder, len);
TD_CODER_MOVE_POS(pCoder, len + sizeof(int32_t));
free(pNode);
}
@ -102,6 +104,7 @@ int tStartDecode(SCoder* pCoder) {
int32_t len;
struct SCoderNode* pNode;
ASSERT(pCoder->type == TD_DECODER);
if (tDecodeI32(pCoder, &len) < 0) return -1;
pNode = malloc(sizeof(*pNode));
@ -121,10 +124,11 @@ int tStartDecode(SCoder* pCoder) {
}
void tEndDecode(SCoder* pCoder) {
ASSERT(tDecodeIsEnd(pCoder));
struct SCoderNode* pNode;
ASSERT(pCoder->type == TD_DECODER);
ASSERT(tDecodeIsEnd(pCoder));
pNode = TD_SLIST_HEAD(&(pCoder->stack));
ASSERT(pNode);
TD_SLIST_POP(&(pCoder->stack));

View File

@ -305,7 +305,7 @@ static int tSFinalReq_v1_decode(SCoder *pCoder, SFinalReq_v1 *ps1) {
if (tDecodeI32(pCoder, &ps1->v_a) < 0) return -1;
if (tDecodeI8(pCoder, &ps1->v_b) < 0) return -1;
tEndEncode(pCoder);
tEndDecode(pCoder);
return 0;
}
@ -346,7 +346,7 @@ static int tSFinalReq_v2_decode(SCoder *pCoder, SFinalReq_v2 *ps2) {
if (tDecodeI16(pCoder, &ps2->v_c) < 0) return -1;
}
tEndEncode(pCoder);
tEndDecode(pCoder);
return 0;
}