diff options
author | Kevin DeJong <kevinmdejong@gmail.com> | 2016-12-10 23:32:11 -0800 |
---|---|---|
committer | Kevin DeJong <kevinmdejong@gmail.com> | 2016-12-11 00:33:26 -0800 |
commit | 7b98f0d2c3929b3d961480d9316e9073e9bcc218 (patch) | |
tree | 2963b781187e617e699b182418716461c2cabb6e /src/sched.rs | |
parent | 2cfeb5758e1c4957acf4a8108a4c0793ef18a937 (diff) | |
download | nix-7b98f0d2c3929b3d961480d9316e9073e9bcc218.zip |
Ensure child stack passed to clone is 16 byte aligned.
Diffstat (limited to 'src/sched.rs')
-rw-r--r-- | src/sched.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/sched.rs b/src/sched.rs index 4af33203..66b4ed4f 100644 --- a/src/sched.rs +++ b/src/sched.rs @@ -114,8 +114,9 @@ pub fn clone(mut cb: CloneCb, let res = unsafe { let combined = flags.bits() | signal.unwrap_or(0); let ptr = stack.as_mut_ptr().offset(stack.len() as isize); + let ptr_aligned = ptr.offset((ptr as usize % 16) as isize * -1); ffi::clone(mem::transmute(callback as extern "C" fn(*mut Box<::std::ops::FnMut() -> isize>) -> i32), - ptr as *mut c_void, + ptr_aligned as *mut c_void, combined, &mut cb) }; |