From 7ca4a148d250ba66b520f764e18dab22cf65e95a Mon Sep 17 00:00:00 2001 From: pikastech Date: Fri, 5 Aug 2022 14:07:57 +0800 Subject: [PATCH] fix ac5 war --- src/PikaObj.c | 49 +++++++++++++++++++++++++----------------------- src/PikaObj.h | 16 ++++++++-------- src/PikaParser.c | 18 +++++++++--------- src/dataArg.c | 4 ++-- src/dataArg.h | 23 ++++++++++++----------- src/dataStack.c | 2 +- 6 files changed, 58 insertions(+), 54 deletions(-) diff --git a/src/PikaObj.c b/src/PikaObj.c index d3fcde634..ebdc3a621 100644 --- a/src/PikaObj.c +++ b/src/PikaObj.c @@ -122,65 +122,68 @@ int32_t obj_deinit(PikaObj* self) { return obj_deinit_no_del(self); } -int32_t obj_setInt(PikaObj* self, char* argPath, int64_t val) { +PIKA_RES obj_setInt(PikaObj* self, char* argPath, int64_t val) { PikaObj* obj = obj_getHostObj(self, argPath); if (NULL == obj) { /* [error] object no found */ - return 1; + return PIKA_RES_ERR_ARG_NO_FOUND; } char* name = strPointToLastToken(argPath, '.'); args_setInt(obj->list, name, val); - return 0; + return PIKA_RES_OK; } -int32_t obj_setPtr(PikaObj* self, char* argPath, void* pointer) { +PIKA_RES obj_setPtr(PikaObj* self, char* argPath, void* pointer) { PikaObj* obj = obj_getHostObj(self, argPath); if (NULL == obj) { - return 1; + /* [error] object no found */ + return PIKA_RES_ERR_ARG_NO_FOUND; } char* name = strPointToLastToken(argPath, '.'); args_setPtr(obj->list, name, pointer); - return 0; + return PIKA_RES_OK; } -int32_t obj_setRef(PikaObj* self, char* argPath, void* pointer) { +PIKA_RES obj_setRef(PikaObj* self, char* argPath, void* pointer) { PikaObj* obj = obj_getHostObj(self, argPath); if (NULL == obj) { - return 1; + /* [error] object no found */ + return PIKA_RES_ERR_ARG_NO_FOUND; } char* name = strPointToLastToken(argPath, '.'); args_setRef(obj->list, name, pointer); - return 0; + return PIKA_RES_OK; } -int32_t obj_setFloat(PikaObj* self, char* argPath, double value) { +PIKA_RES obj_setFloat(PikaObj* self, char* argPath, double value) { PikaObj* obj = obj_getHostObj(self, argPath); if (NULL == obj) { - return 1; + /* [error] object no found */ + return PIKA_RES_ERR_ARG_NO_FOUND; } char* name = strPointToLastToken(argPath, '.'); args_setFloat(obj->list, name, value); - return 0; + return PIKA_RES_OK; } -int32_t obj_setStr(PikaObj* self, char* argPath, char* str) { +PIKA_RES obj_setStr(PikaObj* self, char* argPath, char* str) { PikaObj* obj = obj_getHostObj(self, argPath); if (NULL == obj) { - return 1; + return PIKA_RES_ERR_ARG_NO_FOUND; } char* name = strPointToLastToken(argPath, '.'); args_setStr(obj->list, name, str); - return 0; + return PIKA_RES_OK; } -int32_t obj_setBytes(PikaObj* self, char* argPath, uint8_t* src, size_t size) { +PIKA_RES obj_setBytes(PikaObj* self, char* argPath, uint8_t* src, size_t size) { PikaObj* obj = obj_getHostObj(self, argPath); if (NULL == obj) { - return 1; + return PIKA_RES_ERR_ARG_NO_FOUND; } char* name = strPointToLastToken(argPath, '.'); args_setBytes(obj->list, name, src, size); - return 0; + return PIKA_RES_OK; } int64_t obj_getInt(PikaObj* self, char* argPath) { @@ -240,7 +243,7 @@ size_t obj_loadBytes(PikaObj* self, char* argPath, uint8_t* out_buff) { return size_mem; } -static int32_t __obj_setArg(PikaObj* self, +static PIKA_RES __obj_setArg(PikaObj* self, char* argPath, Arg* arg, uint8_t is_copy) { @@ -248,7 +251,7 @@ static int32_t __obj_setArg(PikaObj* self, PikaObj* obj = obj_getHostObj(self, argPath); if (NULL == obj) { /* object no found */ - return 1; + return PIKA_RES_ERR_ARG_NO_FOUND; } char* argName = strPointToLastToken(argPath, '.'); Arg* newArg; @@ -259,14 +262,14 @@ static int32_t __obj_setArg(PikaObj* self, } newArg = arg_setName(newArg, argName); args_setArg(obj->list, newArg); - return 0; + return PIKA_RES_OK; } -int32_t obj_setArg(PikaObj* self, char* argPath, Arg* arg) { +PIKA_RES obj_setArg(PikaObj* self, char* argPath, Arg* arg) { return __obj_setArg(self, argPath, arg, 1); }; -int32_t obj_setArg_noCopy(PikaObj* self, char* argPath, Arg* arg) { +PIKA_RES obj_setArg_noCopy(PikaObj* self, char* argPath, Arg* arg) { return __obj_setArg(self, argPath, arg, 0); } diff --git a/src/PikaObj.h b/src/PikaObj.h index e03e3a6ad..b0904c2bf 100644 --- a/src/PikaObj.h +++ b/src/PikaObj.h @@ -100,14 +100,14 @@ int32_t obj_enable(PikaObj* self); int32_t obj_disable(PikaObj* self); // arg type operations -int32_t obj_setInt(PikaObj* self, char* argPath, int64_t val); -int32_t obj_setRef(PikaObj* self, char* argPath, void* pointer); -int32_t obj_setPtr(PikaObj* self, char* argPath, void* pointer); -int32_t obj_setFloat(PikaObj* self, char* argPath, double value); -int32_t obj_setStr(PikaObj* self, char* argPath, char* str); -int32_t obj_setArg(PikaObj* self, char* argPath, Arg* arg); -int32_t obj_setArg_noCopy(PikaObj* self, char* argPath, Arg* arg); -int32_t obj_setBytes(PikaObj* self, char* argPath, uint8_t* src, size_t size); +PIKA_RES obj_setInt(PikaObj* self, char* argPath, int64_t val); +PIKA_RES obj_setRef(PikaObj* self, char* argPath, void* pointer); +PIKA_RES obj_setPtr(PikaObj* self, char* argPath, void* pointer); +PIKA_RES obj_setFloat(PikaObj* self, char* argPath, double value); +PIKA_RES obj_setStr(PikaObj* self, char* argPath, char* str); +PIKA_RES obj_setArg(PikaObj* self, char* argPath, Arg* arg); +PIKA_RES obj_setArg_noCopy(PikaObj* self, char* argPath, Arg* arg); +PIKA_RES obj_setBytes(PikaObj* self, char* argPath, uint8_t* src, size_t size); void* obj_getPtr(PikaObj* self, char* argPath); double obj_getFloat(PikaObj* self, char* argPath); diff --git a/src/PikaParser.c b/src/PikaParser.c index 3693d92db..fb3761eb9 100644 --- a/src/PikaParser.c +++ b/src/PikaParser.c @@ -163,7 +163,7 @@ char* strsPopTokenWithSkip_byStr(Args* outBuffs, } char* strsGetCleanCmd(Args* outBuffs, char* cmd) { - pika_assert(cmd!=NULL); + pika_assert(cmd != NULL); int32_t size = strGetSize(cmd); /* lexer may generate more chars than input */ char* strOut = args_getBuff(outBuffs, size * 2); @@ -1301,7 +1301,7 @@ char* Parser_popSubStmt(Args* outbuffs, char** stmt_p, char* delimiter) { Arg* substmt_arg = arg_newStr(""); Arg* newstmt_arg = arg_newStr(""); char* stmt = *stmt_p; - PIKA_BOOL is_get_substmt = 0; + PIKA_BOOL is_get_substmt = PIKA_FALSE; Args buffs = {0}; ParserState_forEachToken(ps, stmt) { ParserState_iterStart(&ps); @@ -1319,7 +1319,7 @@ char* Parser_popSubStmt(Args* outbuffs, char** stmt_p, char* delimiter) { } if (strEqu(ps.token1.pyload, delimiter)) { /* found delimiter */ - is_get_substmt = 1; + is_get_substmt = PIKA_TRUE; ParserState_iterEnd(&ps); continue; } @@ -1861,7 +1861,7 @@ AST* AST_parseLine(char* line, Stack* block_stack) { } block_matched: - if (NULL == stmt){ + if (NULL == stmt) { AST_deinit(ast); ast = NULL; goto exit; @@ -2540,13 +2540,16 @@ ByteCodeFrame* byteCodeFrame_appendFromAsm(ByteCodeFrame* self, char* pikaAsm) { }; uint16_t const_pool_offset; uint16_t exist_offset; - + int invoke_deepth_int = 0; for (int i = 0; i < strCountSign(pikaAsm, '\n'); i++) { Args buffs = {0}; char* line = strsGetLine(&buffs, asmer.line_pointer); char* data = NULL; char ins_str[4] = ""; char invoke_deepth[3] = ""; + uint8_t space_num = 0; + uint8_t invoke_deepth_i = 0; + uint8_t ins_str_i = 0; Arg* line_buff = arg_newStr(line); strsDeinit(&buffs); line = arg_getStr(line_buff); @@ -2567,9 +2570,6 @@ ByteCodeFrame* byteCodeFrame_appendFromAsm(ByteCodeFrame* self, char* pikaAsm) { /* get constPool offset */ const_pool_offset = 0; - uint8_t space_num = 0; - uint8_t invoke_deepth_i = 0; - uint8_t ins_str_i = 0; for (int i = 0; i < (int)strGetSize(line); i++) { if (space_num < 2) { if (line[i] == ' ') { @@ -2607,7 +2607,7 @@ ByteCodeFrame* byteCodeFrame_appendFromAsm(ByteCodeFrame* self, char* pikaAsm) { const_pool_offset = exist_offset; } - int invoke_deepth_int = fast_atoi(invoke_deepth); + invoke_deepth_int = fast_atoi(invoke_deepth); /* load Asm to byte code unit */ instructUnit_setBlockDeepth(&ins_unit, asmer.block_deepth_now); instructUnit_setInvokeDeepth(&ins_unit, invoke_deepth_int); diff --git a/src/dataArg.c b/src/dataArg.c index ff429756e..decda490c 100644 --- a/src/dataArg.c +++ b/src/dataArg.c @@ -53,7 +53,7 @@ static Arg* arg_init_hash(Hash nameHash, uint32_t size, Arg* next) { Arg* self = (Arg*)pikaMalloc(sizeof(Arg) + size); - self->next = next; + arg_setNext(self, next); self->size = size; self->name_hash = nameHash; self->type = type; @@ -77,7 +77,7 @@ static Arg* arg_init(char* name, } void arg_init_stack(Arg* self, uint8_t* buffer, uint32_t size) { - self->buffer = buffer; + self->_.buffer = buffer; self->size = size; self->type = ARG_TYPE_UNDEF; self->name_hash = 0; diff --git a/src/dataArg.h b/src/dataArg.h index 611424c14..987044deb 100644 --- a/src/dataArg.h +++ b/src/dataArg.h @@ -56,11 +56,12 @@ typedef enum { typedef void (*StructDeinitFun)(void* struct_); typedef struct Arg Arg; +typedef union { + Arg* next; + uint8_t* buffer; +} _arg_union; struct Arg { - union { - Arg* next; - uint8_t* buffer; - }; + _arg_union _; uint32_t size; uint8_t type; PIKA_BOOL serialized; @@ -128,21 +129,21 @@ void arg_printBytes(Arg* self); Arg* arg_loadFile(Arg* self, char* filename); uint8_t argType_isObject(ArgType type); -#define arg_getNext(self) ((self)->next) +#define arg_getNext(self) ((self)->_.next) #define arg_getSize(self) ((self)->size) #define arg_getContent(self) \ - ((self)->serialized ? (self)->content : ((self)->buffer)) -#define arg_getNext(self) ((self)->next) -#define arg_setNext(self, __next) ((self)->next = (__next)) + ((self)->serialized ? (self)->content : ((self)->_.buffer)) +#define arg_getNext(self) ((self)->_.next) +#define arg_setNext(self, __next) ((self)->_.next = (__next)) #define argType_isObject(type) \ ((type) == ARG_TYPE_OBJECT || (type) == ARG_TYPE_OBJECT_NEW) #endif -#define arg_newReg(__name, __size) \ - Arg __name = {0}; \ - uint8_t __##__name##_buff[__size] = {0}; \ +#define arg_newReg(__name, __size) \ + Arg __name = {0}; \ + uint8_t __##__name##_buff[__size] = {0}; \ arg_init_stack(&__name, __##__name##_buff, __size) void arg_init_stack(Arg* self, uint8_t* buffer, uint32_t size); diff --git a/src/dataStack.c b/src/dataStack.c index 9407ae008..d1925e3e2 100644 --- a/src/dataStack.c +++ b/src/dataStack.c @@ -78,7 +78,7 @@ void stack_pushPyload(Stack* stack, Arg* content, size_t size) { __platform_memcpy(stack->sp, content, size); } else { __platform_memcpy(stack->sp, content, sizeof(Arg)); - __platform_memcpy(stack->sp + sizeof(Arg), content->buffer, + __platform_memcpy(stack->sp + sizeof(Arg), content->_.buffer, size - sizeof(Arg)); /* transfer to serialized form */ ((Arg*)stack->sp)->serialized = PIKA_TRUE;