From f2b4c5697798b8379a357452f408e6892c5b5aa1 Mon Sep 17 00:00:00 2001 From: lyon1998 <645275593@qq.com> Date: Sat, 16 Oct 2021 18:13:52 +0800 Subject: [PATCH] check null in strEqu --- src/PikaParser.c | 6 ++++++ src/dataString.c | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/PikaParser.c b/src/PikaParser.c index 199814c78..3129acb27 100644 --- a/src/PikaParser.c +++ b/src/PikaParser.c @@ -147,9 +147,11 @@ AST* pikaParseLine(char* line) { char* stmt = lineStart; if (0 == strncmp(lineStart, (char*)"while ", 6)) { stmt = strsCut(buffs, lineStart, ' ', ':'); + obj_setStr(ast, "contralFlow", "while"); } if (0 == strncmp(lineStart, (char*)"if ", 3)) { stmt = strsCut(buffs, lineStart, ' ', ':'); + obj_setStr(ast, "contralFlow", "if"); } stmt = strsGetCleanCmd(buffs, stmt); ast = AST_parseStmt(ast, stmt); @@ -214,6 +216,7 @@ char* AST_appandPikaAsm(AST* ast, AST* subAst, Args* buffs, char* pikaAsm) { char* AST_toPikaAsm(AST* ast, Args* buffs) { Args* runBuffs = New_strBuff(); char* pikaAsm = strsCopy(runBuffs, ""); + pikaAsm = strsCopy(runBuffs, ""); pikaAsm = strsAppend(buffs, pikaAsm, (char*)"B"); char buff[11]; pikaAsm = strsAppend(buffs, pikaAsm, @@ -221,6 +224,9 @@ char* AST_toPikaAsm(AST* ast, Args* buffs) { pikaAsm = strsAppend(buffs, pikaAsm, (char*)"\n"); obj_setInt(ast, "deepth", 0); pikaAsm = AST_appandPikaAsm(ast, ast, runBuffs, pikaAsm); + if (strEqu(obj_getStr(ast, "contralFlow"), "while")) { + pikaAsm = strsAppend(runBuffs, pikaAsm, "JEZ 2\n"); + } pikaAsm = strsCopy(buffs, pikaAsm); args_deinit(runBuffs); return pikaAsm; diff --git a/src/dataString.c b/src/dataString.c index 01b9a96f6..45c4aa28b 100644 --- a/src/dataString.c +++ b/src/dataString.c @@ -237,6 +237,9 @@ int32_t strIsStartWith(char* str, char* strStart) { } int32_t strEqu(char* str1, char* str2) { + if (NULL == str1 || NULL == str2) { + return 0; + } return !strcmp(str1, str2); }