@@ -513,16 +513,26 @@ fn parse_cubestore_ws_result_message(mut cx: FunctionContext) -> JsResult<JsValu
513513 let msg_data = msg. as_slice ( & cx) . to_vec ( ) ;
514514 match parse_cubestore_ws_result ( & * msg_data) {
515515 Ok ( result) => {
516- let js_array = JsArray :: new ( & mut cx, result. len ( ) ) ;
517- for ( i, row) in result. into_iter ( ) . enumerate ( ) {
518- let js_row = JsObject :: new ( & mut cx) ;
519- for ( key, value) in row. into_iter ( ) {
520- let js_key = cx. string ( key) ;
521- let js_value = cx. string ( value) ;
522- js_row. set ( & mut cx, js_key, js_value) ?;
516+ let js_array = cx. execute_scoped ( |mut cx| {
517+ let js_array = JsArray :: new ( & mut cx, result. len ( ) ) ;
518+
519+ for ( i, row) in result. into_iter ( ) . enumerate ( ) {
520+ let js_row = cx. execute_scoped ( |mut cx| {
521+ let js_row = JsObject :: new ( & mut cx) ;
522+ for ( key, value) in row. into_iter ( ) {
523+ let js_key = cx. string ( key) ;
524+ let js_value = cx. string ( value) ;
525+ js_row. set ( & mut cx, js_key, js_value) ?;
526+ }
527+ Ok ( js_row)
528+ } ) ?;
529+
530+ js_array. set ( & mut cx, i as u32 , js_row) ?;
523531 }
524- js_array. set ( & mut cx, i as u32 , js_row) ?;
525- }
532+
533+ Ok ( js_array)
534+ } ) ?;
535+
526536 Ok ( js_array. upcast ( ) )
527537 }
528538 Err ( err) => cx. throw_error ( err. to_string ( ) ) ,
0 commit comments