@@ -102,20 +102,20 @@ unsafe fn copy_nonoverlapping_small(src: *const u8, dst: *mut u8, count: usize)
102102 return ;
103103 }
104104
105- let mut i = 0 ;
106- if i + 3 < count {
105+ let mut i = 0_usize ;
106+ if i. wrapping_add ( 3 ) < count {
107107 ptr:: copy_nonoverlapping ( src. add ( i) , dst. add ( i) , 4 ) ;
108- i += 4 ;
108+ i = i . wrapping_add ( 4 ) ;
109109 }
110110
111111 if i + 1 < count {
112112 ptr:: copy_nonoverlapping ( src. add ( i) , dst. add ( i) , 2 ) ;
113- i += 2
113+ i = i . wrapping_add ( 2 ) ;
114114 }
115115
116116 if i < count {
117117 * dst. add ( i) = * src. add ( i) ;
118- i += 1 ;
118+ i = i . wrapping_add ( 1 ) ;
119119 }
120120
121121 debug_assert_eq ! ( i, count) ;
@@ -211,14 +211,14 @@ impl SipHasher128 {
211211 debug_assert ! ( nbuf < BUFFER_SIZE ) ;
212212 debug_assert ! ( nbuf + LEN < BUFFER_WITH_SPILL_SIZE ) ;
213213
214- if nbuf + LEN < BUFFER_SIZE {
214+ if nbuf. wrapping_add ( LEN ) < BUFFER_SIZE {
215215 unsafe {
216216 // The memcpy call is optimized away because the size is known.
217217 let dst = ( self . buf . as_mut_ptr ( ) as * mut u8 ) . add ( nbuf) ;
218218 ptr:: copy_nonoverlapping ( bytes. as_ptr ( ) , dst, LEN ) ;
219219 }
220220
221- self . nbuf = nbuf + LEN ;
221+ self . nbuf = nbuf. wrapping_add ( LEN ) ;
222222
223223 return ;
224224 }
@@ -265,8 +265,8 @@ impl SipHasher128 {
265265 // This function should only be called when the write fills the buffer.
266266 // Therefore, when LEN == 1, the new `self.nbuf` must be zero.
267267 // LEN is statically known, so the branch is optimized away.
268- self . nbuf = if LEN == 1 { 0 } else { nbuf + LEN - BUFFER_SIZE } ;
269- self . processed += BUFFER_SIZE ;
268+ self . nbuf = if LEN == 1 { 0 } else { nbuf. wrapping_add ( LEN ) . wrapping_sub ( BUFFER_SIZE ) } ;
269+ self . processed = self . processed . wrapping_add ( BUFFER_SIZE ) ;
270270 }
271271 }
272272
@@ -277,7 +277,7 @@ impl SipHasher128 {
277277 let nbuf = self . nbuf ;
278278 debug_assert ! ( nbuf < BUFFER_SIZE ) ;
279279
280- if nbuf + length < BUFFER_SIZE {
280+ if nbuf. wrapping_add ( length) < BUFFER_SIZE {
281281 unsafe {
282282 let dst = ( self . buf . as_mut_ptr ( ) as * mut u8 ) . add ( nbuf) ;
283283
@@ -289,7 +289,7 @@ impl SipHasher128 {
289289 }
290290 }
291291
292- self . nbuf = nbuf + length;
292+ self . nbuf = nbuf. wrapping_add ( length) ;
293293
294294 return ;
295295 }
@@ -327,7 +327,7 @@ impl SipHasher128 {
327327 // ELEM_SIZE` to show the compiler that this loop's upper bound is > 0.
328328 // We know that is true, because last step ensured we have a full
329329 // element in the buffer.
330- let last = nbuf / ELEM_SIZE + 1 ;
330+ let last = ( nbuf / ELEM_SIZE ) . wrapping_add ( 1 ) ;
331331
332332 for i in 0 ..last {
333333 let elem = self . buf . get_unchecked ( i) . assume_init ( ) . to_le ( ) ;
@@ -338,7 +338,7 @@ impl SipHasher128 {
338338
339339 // Process the remaining element-sized chunks of input.
340340 let mut processed = needed_in_elem;
341- let input_left = length - processed;
341+ let input_left = length. wrapping_sub ( processed) ;
342342 let elems_left = input_left / ELEM_SIZE ;
343343 let extra_bytes_left = input_left % ELEM_SIZE ;
344344
@@ -347,7 +347,7 @@ impl SipHasher128 {
347347 self . state . v3 ^= elem;
348348 Sip13Rounds :: c_rounds ( & mut self . state ) ;
349349 self . state . v0 ^= elem;
350- processed += ELEM_SIZE ;
350+ processed = processed . wrapping_add ( ELEM_SIZE ) ;
351351 }
352352
353353 // Copy remaining input into start of buffer.
@@ -356,7 +356,7 @@ impl SipHasher128 {
356356 copy_nonoverlapping_small ( src, dst, extra_bytes_left) ;
357357
358358 self . nbuf = extra_bytes_left;
359- self . processed += nbuf + processed;
359+ self . processed = self . processed . wrapping_add ( nbuf) . wrapping_add ( processed) ;
360360 }
361361 }
362362
@@ -394,7 +394,7 @@ impl SipHasher128 {
394394 } ;
395395
396396 // Finalize the hash.
397- let length = self . processed + self . nbuf ;
397+ let length = self . processed . wrapping_add ( self . nbuf ) ;
398398 let b: u64 = ( ( length as u64 & 0xff ) << 56 ) | elem;
399399
400400 state. v3 ^= b;
0 commit comments