@@ -171,13 +171,10 @@ fn asm_type_convert(typ: &DataType, input: TokenStream) -> (TokenStream, TokenSt
171171 // data in a result-like JSON blob, mapping the `Result`'s variants to the keys "ok"
172172 // and "err".
173173 quote ! {
174- [
175- match :: usdt:: to_json( & #input) {
176- Ok ( json) => format!( "{{\" ok\" :{}}}" , json) ,
177- Err ( e) => format!( "{{\" err\" :\" {}\" }}" , e. to_string( ) ) ,
178- } . as_bytes( ) ,
179- & [ 0_u8 ]
180- ] . concat( )
174+ match :: usdt:: to_json( & #input) {
175+ Ok ( json) => format!( "{{\" ok\" :{}}}\0 " , json) . into_bytes( ) ,
176+ Err ( e) => format!( "{{\" err\" :\" {}\" }}\0 " , e. to_string( ) ) . into_bytes( ) ,
177+ }
181178 } ,
182179 quote ! { . as_ptr( ) as usize } ,
183180 ) ,
@@ -186,9 +183,7 @@ fn asm_type_convert(typ: &DataType, input: TokenStream) -> (TokenStream, TokenSt
186183 quote ! { . as_ptr( ) as usize } ,
187184 ) ,
188185 DataType :: Native ( dtrace_parser:: DataType :: String ) => (
189- quote ! {
190- [ ( #input. as_ref( ) as & str ) . as_bytes( ) , & [ 0_u8 ] ] . concat( )
191- } ,
186+ quote ! { :: usdt:: SerializeString :: serialize( #input) } ,
192187 quote ! { . as_ptr( ) as usize } ,
193188 ) ,
194189 DataType :: Native ( _) => {
@@ -362,7 +357,7 @@ mod tests {
362357
363358 let expected = quote ! {
364359 let arg_0 = ( * <_ as :: std:: borrow:: Borrow <* const u8 >>:: borrow( & args. 0 ) as usize ) ;
365- let arg_1 = [ ( args. 1 . as_ref ( ) as & str ) . as_bytes ( ) , & [ 0_u8 ] ] . concat ( ) ;
360+ let arg_1 = { let mut v = Vec :: from ( args. 1 ) ; v . push ( 0 ) ; v } ;
366361 } ;
367362 assert_eq ! ( args. to_string( ) , expected. to_string( ) ) ;
368363
@@ -404,7 +399,7 @@ mod tests {
404399 ) ;
405400 assert_eq ! (
406401 out. to_string( ) ,
407- quote! { [ ( foo . as_ref ( ) as & str ) . as_bytes ( ) , & [ 0_u8 ] ] . concat ( ) } . to_string( )
402+ quote! { { let mut v = Vec :: from ( foo ) ; v . push ( 0 ) ; v } } . to_string( )
408403 ) ;
409404 assert_eq ! ( post. to_string( ) , quote! { . as_ptr( ) as usize } . to_string( ) ) ;
410405
0 commit comments