Skip to content

Commit 5a596af

Browse files
committed
Add sockaddr_in -> sockaddr cast
1 parent 270f97f commit 5a596af

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

tests/unit/out/unsafe/socket_transparent_union.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,17 @@ unsafe fn main_0() -> i32 {
2424
!= 0)
2525
);
2626
assert!(((((*libcc2rs::cpp2rust_errno()) == (88)) as i32) != 0));
27+
let mut sin: sockaddr_in = std::mem::zeroed::<sockaddr_in>();
28+
let mut inlen: u32 = (::std::mem::size_of::<sockaddr_in>() as u64 as u32);
29+
(*libcc2rs::cpp2rust_errno()) = 0;
30+
assert!(
31+
((((libc::getsockname(
32+
fd,
33+
((&mut sin as *mut sockaddr_in) as *mut sockaddr),
34+
(&mut inlen as *mut u32)
35+
)) == (-1_i32)) as i32)
36+
!= 0)
37+
);
38+
assert!(((((*libcc2rs::cpp2rust_errno()) == (88)) as i32) != 0));
2739
return 0;
2840
}

tests/unit/socket_transparent_union.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,23 @@
22
#define _GNU_SOURCE
33
#include <assert.h>
44
#include <errno.h>
5+
#include <netinet/in.h>
56
#include <sys/socket.h>
67
#include <sys/types.h>
78

89
int main(void) {
910
int fd = 0;
11+
1012
struct sockaddr_storage ssloc;
1113
socklen_t slen = sizeof(ssloc);
1214
assert(getsockname(fd, (struct sockaddr *)&ssloc, &slen) == -1);
1315
assert(errno == ENOTSOCK);
16+
17+
struct sockaddr_in sin;
18+
socklen_t inlen = sizeof(sin);
19+
errno = 0;
20+
assert(getsockname(fd, (struct sockaddr *)&sin, &inlen) == -1);
21+
assert(errno == ENOTSOCK);
22+
1423
return 0;
1524
}

0 commit comments

Comments
 (0)