@@ -55,10 +55,7 @@ pub fn serialize_v8_value(
5555 value : v8:: Local < v8:: Value > ,
5656) -> Result < Vec < u8 > , String > {
5757 let context = scope. get_current_context ( ) ;
58- let serializer = v8:: ValueSerializer :: new (
59- scope,
60- Box :: new ( DefaultSerializerDelegate ) ,
61- ) ;
58+ let serializer = v8:: ValueSerializer :: new ( scope, Box :: new ( DefaultSerializerDelegate ) ) ;
6259 serializer. write_header ( ) ;
6360 serializer
6461 . write_value ( context, value)
@@ -89,11 +86,8 @@ pub fn deserialize_v8_value<'s>(
8986 data : & [ u8 ] ,
9087) -> Result < v8:: Local < ' s , v8:: Value > , String > {
9188 let context = scope. get_current_context ( ) ;
92- let deserializer = v8:: ValueDeserializer :: new (
93- scope,
94- Box :: new ( DefaultDeserializerDelegate ) ,
95- data,
96- ) ;
89+ let deserializer =
90+ v8:: ValueDeserializer :: new ( scope, Box :: new ( DefaultDeserializerDelegate ) , data) ;
9791 deserializer
9892 . read_header ( context)
9993 . ok_or_else ( || "V8 ValueDeserializer: invalid header" . to_string ( ) ) ?;
@@ -128,6 +122,8 @@ struct SyncBridgeFnData {
128122/// Opaque store that keeps bridge function data alive.
129123/// Must be held for the lifetime of the V8 context.
130124pub struct BridgeFnStore {
125+ // Box ensures stable pointer address for v8::External data when Vec grows
126+ #[ allow( clippy:: vec_box) ]
131127 _data : Vec < Box < SyncBridgeFnData > > ,
132128}
133129
@@ -142,6 +138,8 @@ struct AsyncBridgeFnData {
142138/// Opaque store that keeps async bridge function data alive.
143139/// Must be held for the lifetime of the V8 context.
144140pub struct AsyncBridgeFnStore {
141+ // Box ensures stable pointer address for v8::External data when Vec grows
142+ #[ allow( clippy:: vec_box) ]
145143 _data : Vec < Box < AsyncBridgeFnData > > ,
146144}
147145
@@ -245,7 +243,8 @@ fn sync_bridge_callback(
245243 match serialize_v8_args_into ( scope, & args, & mut bufs. ser_buf ) {
246244 Ok ( ( ) ) => bufs. ser_buf . clone ( ) ,
247245 Err ( err) => {
248- let msg = v8:: String :: new ( scope, & format ! ( "bridge serialization error: {}" , err) ) . unwrap ( ) ;
246+ let msg = v8:: String :: new ( scope, & format ! ( "bridge serialization error: {}" , err) )
247+ . unwrap ( ) ;
249248 let exc = v8:: Exception :: error ( scope, msg) ;
250249 scope. throw_exception ( exc) ;
251250 return ;
@@ -349,9 +348,8 @@ fn async_bridge_callback(
349348 let external = match v8:: Local :: < v8:: External > :: try_from ( args. data ( ) ) {
350349 Ok ( ext) => ext,
351350 Err ( _) => {
352- let msg =
353- v8:: String :: new ( scope, "internal error: missing async bridge function data" )
354- . unwrap ( ) ;
351+ let msg = v8:: String :: new ( scope, "internal error: missing async bridge function data" )
352+ . unwrap ( ) ;
355353 let exc = v8:: Exception :: error ( scope, msg) ;
356354 scope. throw_exception ( exc) ;
357355 return ;
@@ -383,7 +381,8 @@ fn async_bridge_callback(
383381 match serialize_v8_args_into ( scope, & args, & mut bufs. ser_buf ) {
384382 Ok ( ( ) ) => bufs. ser_buf . clone ( ) ,
385383 Err ( err) => {
386- let msg = v8:: String :: new ( scope, & format ! ( "bridge serialization error: {}" , err) ) . unwrap ( ) ;
384+ let msg = v8:: String :: new ( scope, & format ! ( "bridge serialization error: {}" , err) )
385+ . unwrap ( ) ;
387386 let exc = v8:: Exception :: error ( scope, msg) ;
388387 scope. throw_exception ( exc) ;
389388 return ;
@@ -449,17 +448,15 @@ pub fn register_stub_bridge_fns(
449448
450449 // Register sync bridge functions as stubs (no External data)
451450 for & method_name in sync_fns {
452- let template = v8:: FunctionTemplate :: builder ( sync_bridge_callback)
453- . build ( scope) ;
451+ let template = v8:: FunctionTemplate :: builder ( sync_bridge_callback) . build ( scope) ;
454452 let func = template. get_function ( scope) . unwrap ( ) ;
455453 let key = v8:: String :: new ( scope, method_name) . unwrap ( ) ;
456454 global. set ( scope, key. into ( ) , func. into ( ) ) ;
457455 }
458456
459457 // Register async bridge functions as stubs (no External data)
460458 for & method_name in async_fns {
461- let template = v8:: FunctionTemplate :: builder ( async_bridge_callback)
462- . build ( scope) ;
459+ let template = v8:: FunctionTemplate :: builder ( async_bridge_callback) . build ( scope) ;
463460 let func = template. get_function ( scope) . unwrap ( ) ;
464461 let key = v8:: String :: new ( scope, method_name) . unwrap ( ) ;
465462 global. set ( scope, key. into ( ) , func. into ( ) ) ;
@@ -468,7 +465,11 @@ pub fn register_stub_bridge_fns(
468465
469466/// Serialize V8 function arguments into a pre-allocated buffer.
470467/// The buffer is cleared and reused across calls (grows to high-water mark).
471- fn serialize_v8_args_into ( scope : & mut v8:: HandleScope , args : & v8:: FunctionCallbackArguments , buf : & mut Vec < u8 > ) -> Result < ( ) , String > {
468+ fn serialize_v8_args_into (
469+ scope : & mut v8:: HandleScope ,
470+ args : & v8:: FunctionCallbackArguments ,
471+ buf : & mut Vec < u8 > ,
472+ ) -> Result < ( ) , String > {
472473 let count = args. length ( ) ;
473474 let array = v8:: Array :: new ( scope, count) ;
474475 for i in 0 ..count {
0 commit comments