File tree Expand file tree Collapse file tree 1 file changed +9
-3
lines changed Expand file tree Collapse file tree 1 file changed +9
-3
lines changed Original file line number Diff line number Diff line change @@ -21,10 +21,16 @@ pub fn py_to_js(vm: &mut VirtualMachine, py_obj: PyObjectRef) -> JsValue {
21
21
let wasm_vm = WASMVirtualMachine {
22
22
id : wasm_id. clone ( ) ,
23
23
} ;
24
+ let mut py_obj = Some ( py_obj) ;
24
25
let closure =
25
26
move |args : Option < Array > , kwargs : Option < Object > | -> Result < JsValue , JsValue > {
26
- let py_obj = py_obj. clone ( ) ;
27
- wasm_vm. assert_valid ( ) ?;
27
+ let py_obj = match wasm_vm. assert_valid ( ) {
28
+ Ok ( _) => py_obj. clone ( ) . expect ( "py_obj to be valid if VM is valid" ) ,
29
+ Err ( err) => {
30
+ py_obj = None ;
31
+ return Err ( err) ;
32
+ }
33
+ } ;
28
34
let acc_vm = AccessibleVM :: from ( wasm_vm. clone ( ) ) ;
29
35
let vm = & mut acc_vm
30
36
. upgrade ( )
@@ -47,7 +53,7 @@ pub fn py_to_js(vm: &mut VirtualMachine, py_obj: PyObjectRef) -> JsValue {
47
53
pyresult_to_jsresult ( vm, result)
48
54
} ;
49
55
let closure = Closure :: wrap ( Box :: new ( closure)
50
- as Box < dyn Fn ( Option < Array > , Option < Object > ) -> Result < JsValue , JsValue > > ) ;
56
+ as Box < dyn FnMut ( Option < Array > , Option < Object > ) -> Result < JsValue , JsValue > > ) ;
51
57
let func = closure. as_ref ( ) . clone ( ) ;
52
58
53
59
// TODO: Come up with a way of managing closure handles
You can’t perform that action at this time.
0 commit comments