File tree Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Original file line number Diff line number Diff line change @@ -136,9 +136,13 @@ pub fn write_timestamp<W: RmpWrite>(wr: &mut W, timestamp: Timestamp) -> Result<
136136 wr. write_data_u32 ( secs as u32 ) ?;
137137 } ,
138138 Timestamp :: T64 ( timedate) => {
139- let secs = timedate. timestamp ( ) ;
140- let nsecs = timedate. timestamp_subsec_nanos ( ) ;
141- if secs < 0 || secs > 0x3_ffff_ffff || nsecs > crate :: MAX_NSECS {
139+ let mut secs = timedate. timestamp ( ) ;
140+ let mut nsecs = timedate. timestamp_subsec_nanos ( ) ;
141+ if nsecs > crate :: MAX_NSECS {
142+ nsecs %= 1_000_000_000 ;
143+ secs += 1 ;
144+ }
145+ if secs < 0 || secs > 0x3_ffff_ffff {
142146 return Ok ( false )
143147 }
144148 write_marker ( wr, Marker :: FixExt8 ) . map_err ( |e| e. 0 ) ?;
@@ -147,10 +151,11 @@ pub fn write_timestamp<W: RmpWrite>(wr: &mut W, timestamp: Timestamp) -> Result<
147151 wr. write_data_u64 ( data) ?;
148152 } ,
149153 Timestamp :: T96 ( timedate) => {
150- let secs = timedate. timestamp ( ) ;
151- let nsecs = timedate. timestamp_subsec_nanos ( ) ;
154+ let mut secs = timedate. timestamp ( ) ;
155+ let mut nsecs = timedate. timestamp_subsec_nanos ( ) ;
152156 if nsecs > crate :: MAX_NSECS {
153- return Ok ( false )
157+ nsecs %= 1_000_000_000 ;
158+ secs += 1 ;
154159 }
155160 write_marker ( wr, Marker :: Ext8 ) . map_err ( |e| e. 0 ) ?;
156161 wr. write_data_u8 ( 12 ) ?;
You can’t perform that action at this time.
0 commit comments