Skip to content

Commit a03a82e

Browse files
committed
Convert a simple tail call to a loop
1 parent d6237ce commit a03a82e

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/libstd/sys/common/net.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -121,16 +121,20 @@ pub struct LookupHost {
121121
impl Iterator for LookupHost {
122122
type Item = SocketAddr;
123123
fn next(&mut self) -> Option<SocketAddr> {
124-
let result;
125-
unsafe {
126-
if self.cur.is_null() { return None }
127-
result = sockaddr_to_addr(mem::transmute((*self.cur).ai_addr),
128-
(*self.cur).ai_addrlen as usize).ok();
129-
self.cur = (*self.cur).ai_next as *mut c::addrinfo;
130-
}
131-
match result {
132-
Some(r) => Some(r),
133-
None => self.next(),
124+
loop {
125+
unsafe {
126+
let cur = match self.cur.as_ref() {
127+
None => return None,
128+
Some(c) => c,
129+
};
130+
self.cur = cur.ai_next;
131+
match sockaddr_to_addr(mem::transmute(cur.ai_addr),
132+
cur.ai_addrlen as usize)
133+
{
134+
Ok(addr) => return Some(addr),
135+
Err(_) => continue,
136+
}
137+
}
134138
}
135139
}
136140
}

0 commit comments

Comments
 (0)