fix stack overflow issue

This commit is contained in:
Add00
2023-08-14 22:22:20 -04:00
parent ab0720a5ef
commit 79f2e231db
4 changed files with 21 additions and 14 deletions

View File

@@ -232,8 +232,8 @@ static int nativeRead(Toy_Interpreter* interpreter, Toy_LiteralArray* arguments)
case TOY_LITERAL_STRING:
{
char value[TOY_MAX_STRING_LENGTH] = {0};
fread(value, sizeof(char), sizeof(value) - 1, file->fp);
value[TOY_MAX_STRING_LENGTH] = '\0';
fread(value, sizeof(char), TOY_MAX_STRING_LENGTH - 1, file->fp);
value[TOY_MAX_STRING_LENGTH - 1] = '\0';
resultLiteral = TOY_TO_STRING_LITERAL(Toy_createRefString(value));

View File

@@ -0,0 +1,3 @@
8
12.5
test

View File

@@ -0,0 +1,2 @@
8
12.500000

View File

@@ -19,25 +19,27 @@ fn reset() {
// test read
{
// // enter test
// assert input.read(string) == "test\n", "read string failed";
var reader = open("scripts:/lib/file/inputs.txt", "r");
// // enter 8
// assert input.read(int) == 8, "read int failed";
assert reader.read(int) == 8, "read int failed";
assert reader.read(float) == 12.5, "read float failed";
assert reader.read(string) == "\ntest\n", "read string failed";
// // enter 12.5
// assert input.read(float) == 12.5, "read float failed";
// invaild types
assert input.read(type) == null, "read type failed";
assert input.read(any) == null, "read any failed";
// // invaild types
// assert input.read(type) == null, "read type failed";
// assert input.read(any) == null, "read any failed";
reader.close();
}
// test write
{
assert output.write(8) == true, "write int failed";
assert output.write("\n") == true, "write string failed";
assert output.write(12.5) == true, "write float failed";
var writer = open("scripts:/lib/file/outputs.txt", "w");
assert writer.write(8) == true, "write int failed";
assert writer.write("\n") == true, "write string failed";
assert writer.write(12.5) == true, "write float failed";
writer.close();
}