From 52f7ba187821fa1bca10b752b3fb28b1fcf8d97a Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Fri, 16 Mar 2018 21:33:11 +0000 Subject: [PATCH] rust/bupsplit: minor idiomatic fixes This fixes a few un-idiomatic bits in Rust bupsplit code, getting rid of some unchecked casts and an assert statement. Closes: #1502 Approved by: cgwalters --- rust/src/bupsplit.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/rust/src/bupsplit.rs b/rust/src/bupsplit.rs index af97e968..607c6639 100644 --- a/rust/src/bupsplit.rs +++ b/rust/src/bupsplit.rs @@ -42,7 +42,7 @@ use std::slice; const ROLLSUM_CHAR_OFFSET: u32 = 31; // Previously in the header file -const BUP_BLOBBITS: u32= 13; +const BUP_BLOBBITS: u32 = 13; const BUP_BLOBSIZE: u32 = (1< () { - let drop_expanded = drop as u32; - let add_expanded = add as u32; + let drop_expanded = u32::from(drop); + let add_expanded = u32::from(add); self.s1 = self.s1.wrapping_add(add_expanded.wrapping_sub(drop_expanded)); self.s2 = self.s2.wrapping_add(self.s1.wrapping_sub(BUP_WINDOWSIZE * (drop_expanded + ROLLSUM_CHAR_OFFSET))); } @@ -102,11 +102,11 @@ pub extern fn bupsplit_sum(buf: *const u8, ofs: libc::size_t, len: libc::size_t) pub extern fn bupsplit_find_ofs(buf: *const u8, len: libc::size_t, bits: *mut libc::c_int) -> libc::c_int { - let sbuf = unsafe { - assert!(!buf.is_null()); - slice::from_raw_parts(buf, len as usize) - }; + if buf.is_null() { + return 0; + } + let sbuf = unsafe { slice::from_raw_parts(buf, len as usize) }; let mut r = Rollsum::new(); for x in sbuf { r.roll(*x); @@ -115,8 +115,8 @@ pub extern fn bupsplit_find_ofs(buf: *const u8, len: libc::size_t, let mut sum = r.digest() >> BUP_BLOBBITS; let mut rbits : libc::c_int = BUP_BLOBBITS as i32; while sum & 1 != 0 { - sum = sum >> 1; - rbits = rbits + 1; + sum >>= 1; + rbits += 1; } unsafe { *bits = rbits;