Skip to content

Commit

Permalink
Revert "examples(allocation): free memory after unmarshalling a resul…
Browse files Browse the repository at this point in the history
…t from the guest (#1368)"

This reverts commit 5aafcc4.
  • Loading branch information
Adrian Cole committed Apr 18, 2023
1 parent df0faa5 commit ab78591
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 22 deletions.
8 changes: 1 addition & 7 deletions examples/allocation/tinygo/greet.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
20 changes: 5 additions & 15 deletions examples/allocation/tinygo/testdata/greet.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ import (
"unsafe"
)

// #include <stdlib.h>
import "C"

// main is required for TinyGo to compile to Wasm.
func main() {}

Expand Down Expand Up @@ -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))
}
Binary file modified examples/allocation/tinygo/testdata/greet.wasm
Binary file not shown.

0 comments on commit ab78591

Please sign in to comment.