This commit is contained in:
blueloveTH 2023-06-11 22:59:46 +08:00
parent d23401f77b
commit 577f7b4d0e
2 changed files with 36 additions and 3 deletions

View File

@ -447,9 +447,7 @@ inline void add_module_c(VM* vm){
vm->bind_func<3>(mod, "memset", [](VM* vm, ArgsView args){
void* p = CAST(void*, args[0]);
i64 c = CAST(i64, args[1]);
i64 size = CAST(i64, args[2]);
memset(p, c, size);
memset(p, CAST(int, args[1]), CAST(size_t, args[2]));
return vm->None;
});

35
tests/80_c.py Normal file
View File

@ -0,0 +1,35 @@
import c
c_int = c.refl("int")
assert c_int.size() == c.sizeof("int")
array = c.malloc(c.sizeof("int") * 10)
array.set_base_offset("int")
assert array.get_base_offset() == c_int.size()
for i in range(10):
array.offset(i).write_int(i)
x = c_int()
x.addr().write_int(0)
for i in range(10):
i = array.offset(i).read_int()
x.addr().write_int(
x.addr().read_int() + i
)
assert x.addr().read_int() == (0+9)*10//2
c.memset(array, 0, c.sizeof("int") * 10)
for i in range(10):
assert array.offset(i).read_char() == 0
array2 = c.malloc(c.sizeof("int") * 10)
array2.set_base_offset("int")
c.memcpy(array2, array, c.sizeof("int") * 10)
for i in range(10):
assert array2.offset(i).read_char() == 0
c.free(array)
c.free(array2)