File tree Expand file tree Collapse file tree 3 files changed +25
-4
lines changed Expand file tree Collapse file tree 3 files changed +25
-4
lines changed Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
7
7
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8
8
refs/heads/try2: a810c03263670238bccd64cabb12a23a46e3a278
9
9
refs/heads/incoming: e90142e536c150df0d9b4b2f11352152177509b5
10
- refs/heads/dist-snap: 0d8f447d560d378adebfbad948427adfc2f5ae22
10
+ refs/heads/dist-snap: 25096a212a9ccaa0d181630af5971532c3472182
11
11
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
12
12
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
13
13
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
Original file line number Diff line number Diff line change @@ -112,9 +112,10 @@ fn classify_ty(ty: TypeRef) -> ~[x86_64_reg_class] {
112
112
Float => 4 ,
113
113
Double => 8 ,
114
114
Struct => {
115
- do vec:: foldl ( 0 , struct_tys ( ty) ) |s, t| {
116
- s + ty_size ( * t)
117
- }
115
+ let size = do vec:: foldl ( 0 , struct_tys ( ty) ) |s, t| {
116
+ align ( s, * t) + ty_size ( * t)
117
+ } ;
118
+ align ( size, ty)
118
119
}
119
120
Array => {
120
121
let len = llvm:: LLVMGetArrayLength ( ty) as uint ;
Original file line number Diff line number Diff line change
1
+ // Issue #3656
2
+ // Incorrect struct size computation in the FFI, because of not taking
3
+ // the alignment of elements into account.
4
+
5
+ use libc:: * ;
6
+
7
+ struct KEYGEN {
8
+ hash_algorithm : [ c_uint ] /2 ,
9
+ count : uint32_t ,
10
+ salt : * c_void ,
11
+ salt_size : uint32_t ,
12
+ }
13
+
14
+ extern {
15
+ // Bogus signature, just need to test if it compiles.
16
+ pub fn malloc ( ++data : KEYGEN ) ;
17
+ }
18
+
19
+ fn main ( ) {
20
+ }
You can’t perform that action at this time.
0 commit comments