diff --git a/examples/allocation/tinygo/greet.go b/examples/allocation/tinygo/greet.go index 14d4d882d5..09e1831b01 100644 --- a/examples/allocation/tinygo/greet.go +++ b/examples/allocation/tinygo/greet.go @@ -90,15 +90,9 @@ func main() { if err != nil { log.Panicln(err) } - + // Note: This pointer is still owned by TinyGo, so don't try to free it! greetingPtr := uint32(ptrSize[0] >> 32) greetingSize := uint32(ptrSize[0]) - - // We don't need the memory after deserialization: make sure it is freed. - if greetingPtr != 0 { - defer free.Call(ctx, uint64(greetingPtr)) - } - // The pointer is a linear memory offset, which is where we write the name. if bytes, ok := mod.Memory().Read(greetingPtr, greetingSize); !ok { log.Panicf("Memory.Read(%d, %d) out of range of memory size %d", diff --git a/examples/allocation/tinygo/testdata/greet.go b/examples/allocation/tinygo/testdata/greet.go index cfc460a027..d858ab38fe 100644 --- a/examples/allocation/tinygo/testdata/greet.go +++ b/examples/allocation/tinygo/testdata/greet.go @@ -6,9 +6,6 @@ import ( "unsafe" ) -// #include -import "C" - // main is required for TinyGo to compile to Wasm. func main() {} @@ -73,17 +70,10 @@ func ptrToString(ptr uint32, size uint32) string { } // stringToPtr returns a pointer and size pair for the given string in a way -// compatible with WebAssembly numeric types. The pointer is not automatically -// managed by tinygo but must be freed by the host. +// compatible with WebAssembly numeric types. func stringToPtr(s string) (uint32, uint32) { - if len(s) == 0 { - return 0, 0 - } - - size := C.ulong(len(s)) - ptr := unsafe.Pointer(C.malloc(size)) - - copy(unsafe.Slice((*byte)(ptr), size), []byte(s)) - - return uint32(uintptr(ptr)), uint32(len(s)) + buf := []byte(s) + ptr := &buf[0] + unsafePtr := uintptr(unsafe.Pointer(ptr)) + return uint32(unsafePtr), uint32(len(buf)) } diff --git a/examples/allocation/tinygo/testdata/greet.wasm b/examples/allocation/tinygo/testdata/greet.wasm index bd91540c7d..12efdc1fa2 100755 Binary files a/examples/allocation/tinygo/testdata/greet.wasm and b/examples/allocation/tinygo/testdata/greet.wasm differ