summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2020-08-20 16:03:03 +0900
committerGitHub <noreply@github.com>2020-08-20 16:03:03 +0900
commit17a0b8b0042958467afae3ce29fce257c28e6093 (patch)
tree6c98b8b3521a2c2f275d253af2fd78e8a58f15af
parent6bd95e4f0e0d7afa0c05d506b9ac5d5e36d4c1ed (diff)
parent6b52ae1544808ea55895456e644e30293295a17f (diff)
downloadrust-libc-17a0b8b0042958467afae3ce29fce257c28e6093.tar.gz
Merge pull request #1869 from joshtriplett/fix-copy-clone-no-derive
-rw-r--r--ci/style.rs3
-rw-r--r--src/unix/linux_like/linux/gnu/mod.rs7
2 files changed, 9 insertions, 1 deletions
diff --git a/ci/style.rs b/ci/style.rs
index dcb3536ec3..79574eb44e 100644
--- a/ci/style.rs
+++ b/ci/style.rs
@@ -134,6 +134,9 @@ fn check_style(file: &str, path: &Path, err: &mut Errors) {
instead of #[cfg]");
}
}
+ if line.contains("#[derive(") && (line.contains("Copy") || line.contains("Clone")) {
+ err.error(path, i, "impl ::Copy and ::Clone manually");
+ }
let line = line.trim_start();
let is_pub = line.starts_with("pub ");
diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs
index 166134ec0b..44232e98cb 100644
--- a/src/unix/linux_like/linux/gnu/mod.rs
+++ b/src/unix/linux_like/linux/gnu/mod.rs
@@ -317,7 +317,6 @@ cfg_if! {
if #[cfg(libc_union)] {
// Internal, for casts to access union fields
#[repr(C)]
- #[derive(Copy,Clone)]
struct sifields_sigchld {
si_pid: ::pid_t,
si_uid: ::uid_t,
@@ -325,6 +324,12 @@ cfg_if! {
si_utime: ::c_long,
si_stime: ::c_long,
}
+ impl ::Copy for sifields_sigchld {}
+ impl ::Clone for sifields_sigchld {
+ fn clone(&self) -> sifields_sigchld {
+ *self
+ }
+ }
// Internal, for casts to access union fields
#[repr(C)]