Skip to content

Commit f2b330b

Browse files
committed
Use with_slice_mut instead of looping over bytes
1 parent 61d74fb commit f2b330b

2 files changed

Lines changed: 94 additions & 166 deletions

File tree

‎rules/arpa_inet/tgt_refcount.rs‎

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,17 @@ fn f5(a0: i32, a1: Ptr<u8>, a2: AnyPtr) -> i32 {
77
if a0 == libc::AF_INET {
88
match a1.to_rust_string().parse::<std::net::Ipv4Addr>() {
99
Ok(__ip) => {
10-
let __octets = __ip.octets();
11-
for __i in 0..4 {
12-
a2.reinterpret_cast::<u8>().offset(__i).write(__octets[__i]);
13-
}
10+
a2.reinterpret_cast::<u8>()
11+
.with_slice_mut(4, |__s| __s.copy_from_slice(&__ip.octets()));
1412
1
1513
}
1614
Err(_) => 0,
1715
}
1816
} else if a0 == libc::AF_INET6 {
1917
match a1.to_rust_string().parse::<std::net::Ipv6Addr>() {
2018
Ok(__ip) => {
21-
let __octets = __ip.octets();
22-
for __i in 0..16 {
23-
a2.reinterpret_cast::<u8>().offset(__i).write(__octets[__i]);
24-
}
19+
a2.reinterpret_cast::<u8>()
20+
.with_slice_mut(16, |__s| __s.copy_from_slice(&__ip.octets()));
2521
1
2622
}
2723
Err(_) => 0,
@@ -34,26 +30,25 @@ fn f5(a0: i32, a1: Ptr<u8>, a2: AnyPtr) -> i32 {
3430

3531
fn f6(a0: i32, a1: AnyPtr, a2: Ptr<u8>, a3: u32) -> Ptr<u8> {
3632
let __text = if a0 == libc::AF_INET {
37-
let mut __b = [0u8; 4];
38-
for __i in 0..4 {
39-
__b[__i] = a1.reinterpret_cast::<u8>().offset(__i).read();
40-
}
33+
let __b: [u8; 4] = a1
34+
.reinterpret_cast::<u8>()
35+
.with_slice(4, |__s| __s.try_into().unwrap());
4136
Some(std::net::Ipv4Addr::from(__b).to_string())
4237
} else if a0 == libc::AF_INET6 {
43-
let mut __b = [0u8; 16];
44-
for __i in 0..16 {
45-
__b[__i] = a1.reinterpret_cast::<u8>().offset(__i).read();
46-
}
38+
let __b: [u8; 16] = a1
39+
.reinterpret_cast::<u8>()
40+
.with_slice(16, |__s| __s.try_into().unwrap());
4741
Some(std::net::Ipv6Addr::from(__b).to_string())
4842
} else {
4943
None
5044
};
5145
match __text {
5246
Some(__s) if (__s.len() as u32) < a3 => {
53-
for __i in 0..__s.len() {
54-
a2.offset(__i).write(__s.as_bytes()[__i]);
55-
}
56-
a2.offset(__s.len()).write(0);
47+
let __n = __s.len();
48+
a2.with_slice_mut(__n + 1, |__sl| {
49+
__sl[..__n].copy_from_slice(__s.as_bytes());
50+
__sl[__n] = 0;
51+
});
5752
a2.clone()
5853
}
5954
Some(_) => {

0 commit comments

Comments
 (0)