Root bindings so the delegate in FunctionBinding is not GCed.

This commit is contained in:
Austin Wise
2019-12-05 18:58:09 -08:00
parent 7d415df209
commit 1d01779b2e

View File

@@ -17,8 +17,10 @@ namespace Wasmtime
Host = host;
Module = module;
var bindings = host.GetImportBindings(module);
var handles = bindings.Select(b => b.Bind(module.Store, host)).ToList();
//Save the bindings to root the objects.
//Otherwise the GC may collect the delegates from ExternFunction for example.
_bindings = host.GetImportBindings(module);
var handles = _bindings.Select(b => b.Bind(module.Store, host)).ToList();
unsafe
{
@@ -141,5 +143,6 @@ namespace Wasmtime
private Interop.wasm_extern_vec_t _externs;
private Dictionary<string, ExternFunction> _functions;
private Dictionary<string, ExternGlobal> _globals;
private List<Bindings.Binding> _bindings;
}
}