Fixed an AST bug

This commit is contained in:
2024-07-20 16:27:07 +10:00
parent b77f0fb50d
commit 2ce9a0cf42
3 changed files with 9 additions and 9 deletions

View File

@@ -661,7 +661,7 @@ static int nativeConcat(Toy_Interpreter* interpreter, Toy_LiteralArray* argument
} }
//get the combined length for the new string //get the combined length for the new string
size_t length = TOY_AS_STRING(selfLiteral)->length + TOY_AS_STRING(otherLiteral)->length + 1; size_t length = TOY_AS_STRING(selfLiteral)->length + TOY_AS_STRING(otherLiteral)->length;
if (length > TOY_MAX_STRING_LENGTH) { if (length > TOY_MAX_STRING_LENGTH) {
interpreter->errorOutput("Can't concatenate these strings, result is too long (error found in concat)\n"); interpreter->errorOutput("Can't concatenate these strings, result is too long (error found in concat)\n");
@@ -671,8 +671,8 @@ static int nativeConcat(Toy_Interpreter* interpreter, Toy_LiteralArray* argument
} }
//allocate the space and generate //allocate the space and generate
char* buffer = TOY_ALLOCATE(char, length); char* buffer = TOY_ALLOCATE(char, length + 1);
snprintf(buffer, length, "%s%s", Toy_toCString(TOY_AS_STRING(selfLiteral)), Toy_toCString(TOY_AS_STRING(otherLiteral))); snprintf(buffer, length + 1, "%s%s", Toy_toCString(TOY_AS_STRING(selfLiteral)), Toy_toCString(TOY_AS_STRING(otherLiteral)));
Toy_Literal result = TOY_TO_STRING_LITERAL(Toy_createRefString(buffer)); Toy_Literal result = TOY_TO_STRING_LITERAL(Toy_createRefString(buffer));

View File

@@ -362,8 +362,8 @@ void Toy_emitASTNodeAnd(Toy_ASTNode** nodeHandle, Toy_ASTNode* rhs) {
Toy_ASTNode* tmp = TOY_ALLOCATE(Toy_ASTNode, 1); Toy_ASTNode* tmp = TOY_ALLOCATE(Toy_ASTNode, 1);
tmp->type = TOY_AST_NODE_AND; tmp->type = TOY_AST_NODE_AND;
tmp->binary.left = *nodeHandle; tmp->pathAnd.left = *nodeHandle;
tmp->binary.right = rhs; tmp->pathAnd.right = rhs;
*nodeHandle = tmp; *nodeHandle = tmp;
} }
@@ -372,8 +372,8 @@ void Toy_emitASTNodeOr(Toy_ASTNode** nodeHandle, Toy_ASTNode* rhs) {
Toy_ASTNode* tmp = TOY_ALLOCATE(Toy_ASTNode, 1); Toy_ASTNode* tmp = TOY_ALLOCATE(Toy_ASTNode, 1);
tmp->type = TOY_AST_NODE_OR; tmp->type = TOY_AST_NODE_OR;
tmp->binary.left = *nodeHandle; tmp->pathOr.left = *nodeHandle;
tmp->binary.right = rhs; tmp->pathOr.right = rhs;
*nodeHandle = tmp; *nodeHandle = tmp;
} }

View File

@@ -455,8 +455,8 @@ static void printToBuffer(const char* str) {
globalPrintBuffer = TOY_GROW_ARRAY(char, globalPrintBuffer, oldCapacity, globalPrintCapacity); globalPrintBuffer = TOY_GROW_ARRAY(char, globalPrintBuffer, oldCapacity, globalPrintCapacity);
} }
snprintf(globalPrintBuffer + globalPrintCount, strlen(str) + 1, "%s", str ? str : "\0"); size_t total = snprintf(globalPrintBuffer + globalPrintCount, strlen(str) + 1, "%s", str ? str : "");
globalPrintCount += strlen(str); globalPrintCount += total;
} }
//exposed functions //exposed functions