@@ -68,6 +68,7 @@ mod stage2;
6868/// simd-json JSON-DOM value
6969pub mod value;
7070
71+ use std:: mem:: MaybeUninit ;
7172use std:: { alloc:: dealloc, mem} ;
7273pub use value_trait:: StaticNode ;
7374
@@ -357,7 +358,7 @@ type FnRaw = *mut ();
357358type ParseStrFn = for <' invoke , ' de > unsafe fn (
358359 SillyWrapper < ' de > ,
359360 & ' invoke [ u8 ] ,
360- & ' invoke mut [ u8 ] ,
361+ & ' invoke mut [ MaybeUninit < u8 > ] ,
361362 usize ,
362363) -> std:: result:: Result < & ' de str , error:: Error > ;
363364#[ cfg( all(
@@ -514,7 +515,7 @@ impl<'de> Deserializer<'de> {
514515 pub ( crate ) unsafe fn parse_str_ < ' invoke > (
515516 input : * mut u8 ,
516517 data : & ' invoke [ u8 ] ,
517- buffer : & ' invoke mut [ u8 ] ,
518+ buffer : & ' invoke mut [ MaybeUninit < u8 > ] ,
518519 idx : usize ,
519520 ) -> Result < & ' de str >
520521 where
@@ -538,7 +539,7 @@ impl<'de> Deserializer<'de> {
538539 pub ( crate ) unsafe fn parse_str_ < ' invoke > (
539540 input : * mut u8 ,
540541 data : & ' invoke [ u8 ] ,
541- buffer : & ' invoke mut [ u8 ] ,
542+ buffer : & ' invoke mut [ MaybeUninit < u8 > ] ,
542543 idx : usize ,
543544 ) -> Result < & ' de str >
544545 where
@@ -552,7 +553,7 @@ impl<'de> Deserializer<'de> {
552553 pub ( crate ) unsafe fn parse_str_ < ' invoke > (
553554 input : * mut u8 ,
554555 data : & ' invoke [ u8 ] ,
555- buffer : & ' invoke mut [ u8 ] ,
556+ buffer : & ' invoke mut [ MaybeUninit < u8 > ] ,
556557 idx : usize ,
557558 ) -> Result < & ' de str >
558559 where
@@ -571,7 +572,7 @@ impl<'de> Deserializer<'de> {
571572 pub ( crate ) unsafe fn parse_str_ < ' invoke > (
572573 input : * mut u8 ,
573574 data : & ' invoke [ u8 ] ,
574- buffer : & ' invoke mut [ u8 ] ,
575+ buffer : & ' invoke mut [ MaybeUninit < u8 > ] ,
575576 idx : usize ,
576577 ) -> Result < & ' de str > {
577578 let input: SillyWrapper < ' de > = SillyWrapper :: from ( input) ;
@@ -588,7 +589,7 @@ impl<'de> Deserializer<'de> {
588589 pub ( crate ) unsafe fn parse_str_ < ' invoke > (
589590 input : * mut u8 ,
590591 data : & ' invoke [ u8 ] ,
591- buffer : & ' invoke mut [ u8 ] ,
592+ buffer : & ' invoke mut [ MaybeUninit < u8 > ] ,
592593 idx : usize ,
593594 ) -> Result < & ' de str > {
594595 let input: SillyWrapper < ' de > = SillyWrapper :: from ( input) ;
@@ -600,7 +601,7 @@ impl<'de> Deserializer<'de> {
600601 pub ( crate ) unsafe fn parse_str_ < ' invoke > (
601602 input : * mut u8 ,
602603 data : & ' invoke [ u8 ] ,
603- buffer : & ' invoke mut [ u8 ] ,
604+ buffer : & ' invoke mut [ MaybeUninit < u8 > ] ,
604605 idx : usize ,
605606 ) -> Result < & ' de str > {
606607 let input: SillyWrapper = SillyWrapper :: from ( input) ;
@@ -611,7 +612,7 @@ impl<'de> Deserializer<'de> {
611612 pub ( crate ) unsafe fn parse_str_ < ' invoke > (
612613 input : * mut u8 ,
613614 data : & ' invoke [ u8 ] ,
614- buffer : & ' invoke mut [ u8 ] ,
615+ buffer : & ' invoke mut [ MaybeUninit < u8 > ] ,
615616 idx : usize ,
616617 ) -> Result < & ' de str > {
617618 let input: SillyWrapper < ' de > = SillyWrapper :: from ( input) ;
@@ -876,10 +877,6 @@ impl<'de> Deserializer<'de> {
876877 buffer. string_buffer . clear ( ) ;
877878 buffer. string_buffer . reserve ( len + SIMDJSON_PADDING ) ;
878879
879- unsafe {
880- buffer. string_buffer . set_len ( len + SIMDJSON_PADDING ) ;
881- } ;
882-
883880 let input_buffer = & mut buffer. input_buffer ;
884881 if input_buffer. capacity ( ) < simd_safe_len {
885882 * input_buffer = AlignedBuf :: with_capacity ( simd_safe_len) ;
@@ -907,7 +904,7 @@ impl<'de> Deserializer<'de> {
907904 Self :: build_tape (
908905 input,
909906 input_buffer,
910- & mut buffer. string_buffer ,
907+ buffer. string_buffer . spare_capacity_mut ( ) ,
911908 & buffer. structural_indexes ,
912909 & mut buffer. stage2_stack ,
913910 buffer. max_depth ,
0 commit comments