From b1228be79a4f9ce26fbcb3a85b0c14fa6a8f3326 Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Sun, 9 Feb 2025 15:25:25 +0100 Subject: [PATCH] Fixed incorrect parameters for memory deallocation --- examples/winapi/winapi.q | 10 ++-------- lib/mem/free.q | 2 +- tests/programs/memory-free.q | 7 +++++++ tests/programs_test.go | 1 + 4 files changed, 11 insertions(+), 9 deletions(-) create mode 100644 tests/programs/memory-free.q diff --git a/examples/winapi/winapi.q b/examples/winapi/winapi.q index e232a1b..6e81b03 100644 --- a/examples/winapi/winapi.q +++ b/examples/winapi/winapi.q @@ -1,10 +1,4 @@ -import mem - main() { - text := mem.alloc(4) - text[0] = 'H' - text[1] = 'i' - text[2] = '!' - user32.MessageBoxA(0, text, text, 0x00240040) - mem.free(text, 4) + text := "Hi!\0" + user32.MessageBoxA(0, text, text, 0x240040) } \ No newline at end of file diff --git a/lib/mem/free.q b/lib/mem/free.q index 432d65d..17be5bd 100644 --- a/lib/mem/free.q +++ b/lib/mem/free.q @@ -1,5 +1,5 @@ import sys free(address Pointer, length Int) -> Int { - return sys.munmap(address, length) + return sys.munmap(address-8, length+8) } \ No newline at end of file diff --git a/tests/programs/memory-free.q b/tests/programs/memory-free.q new file mode 100644 index 0000000..a584ef3 --- /dev/null +++ b/tests/programs/memory-free.q @@ -0,0 +1,7 @@ +import mem + +main() { + address := mem.alloc(1024) + err := mem.free(address, 1024) + assert err == 0 +} \ No newline at end of file diff --git a/tests/programs_test.go b/tests/programs_test.go index f4b7d4d..675548b 100644 --- a/tests/programs_test.go +++ b/tests/programs_test.go @@ -59,6 +59,7 @@ var programs = []struct { {"switch", "", "", 0}, {"loop", "", "", 0}, {"loop-lifetime", "", "", 0}, + {"memory-free", "", "", 0}, {"out-of-memory", "", "", 0}, {"struct", "", "", 0}, }