From b47e2795d19e4e8be4891ee56d3f94926f6d7f0a Mon Sep 17 00:00:00 2001 From: pikastech Date: Fri, 5 Aug 2022 13:51:13 +0800 Subject: [PATCH] restore --- src/PikaParser.c | 6 ++++++ src/PikaVM.c | 5 ++++- src/dataArg.c | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/PikaParser.c b/src/PikaParser.c index de1cadf19..3693d92db 100644 --- a/src/PikaParser.c +++ b/src/PikaParser.c @@ -163,6 +163,7 @@ char* strsPopTokenWithSkip_byStr(Args* outBuffs, } char* strsGetCleanCmd(Args* outBuffs, char* cmd) { + pika_assert(cmd!=NULL); int32_t size = strGetSize(cmd); /* lexer may generate more chars than input */ char* strOut = args_getBuff(outBuffs, size * 2); @@ -1860,6 +1861,11 @@ AST* AST_parseLine(char* line, Stack* block_stack) { } block_matched: + if (NULL == stmt){ + AST_deinit(ast); + ast = NULL; + goto exit; + } stmt = strsGetCleanCmd(&buffs, stmt); ast = AST_parseStmt(ast, stmt); goto exit; diff --git a/src/PikaVM.c b/src/PikaVM.c index 4bd4f4b5e..d3e6a36a1 100644 --- a/src/PikaVM.c +++ b/src/PikaVM.c @@ -1167,7 +1167,10 @@ static Arg* VM_instruction_handler_JEZ(PikaObj* self, int jmp_expect = fast_atoi(data); arg_newReg(pika_assertArg_reg, PIKA_ARG_BUFF_SIZE); Arg* pika_assertArg = stack_popArg(&(vs->stack), &pika_assertArg_reg); - int pika_assert = arg_getInt(pika_assertArg); + int pika_assert = 0; + if (NULL != pika_assertArg) { + pika_assert = arg_getInt(pika_assertArg); + } arg_deinit(pika_assertArg); vs->ireg[thisBlockDeepth] = !pika_assert; diff --git a/src/dataArg.c b/src/dataArg.c index 0b43d90c6..ff429756e 100644 --- a/src/dataArg.c +++ b/src/dataArg.c @@ -269,6 +269,7 @@ Arg* arg_setStr(Arg* self, char* name, char* string) { } int64_t arg_getInt(Arg* self) { + pika_assert(NULL!=self); if (NULL == arg_getContent(self)) { return -999999; }