diff options
| author | Jed Davis <jld@panix.com> | 2013-01-08 00:24:25 -0800 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2013-01-13 14:37:59 -0800 |
| commit | ea53c48ca23ec4e46454d48936c209d2a67cf892 (patch) | |
| tree | 9099a0f13a390eca643c978e1b82b4ffc1cefc7e /src | |
| parent | 1b4f3fad1e6036b3d7cb17cc80ac1c204e1f11a2 (diff) | |
| download | rust-ea53c48ca23ec4e46454d48936c209d2a67cf892.tar.gz rust-ea53c48ca23ec4e46454d48936c209d2a67cf892.zip | |
Make empty structs debug-printable
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/lib/llvm.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/librustc/lib/llvm.rs b/src/librustc/lib/llvm.rs index dd23dbe83dc..047268e080f 100644 --- a/src/librustc/lib/llvm.rs +++ b/src/librustc/lib/llvm.rs @@ -1330,9 +1330,10 @@ fn type_to_str_inner(names: type_names, +outer0: ~[TypeRef], ty: TypeRef) -> let mut s: ~str = ~"{"; let n_elts = llvm::LLVMCountStructElementTypes(ty) as uint; let mut elts = vec::from_elem(n_elts, 0 as TypeRef); - llvm::LLVMGetStructElementTypes(ty, - ptr::to_mut_unsafe_ptr( - &mut elts[0])); + if elts.len() > 0 { + llvm::LLVMGetStructElementTypes( + ty, ptr::to_mut_unsafe_ptr(&mut elts[0])); + } s += tys_str(names, outer, elts); s += ~"}"; return s; @@ -1398,8 +1399,10 @@ fn struct_element_types(struct_ty: TypeRef) -> ~[TypeRef] { let mut buf: ~[TypeRef] = vec::from_elem(count as uint, cast::transmute::<uint,TypeRef>(0)); - llvm::LLVMGetStructElementTypes(struct_ty, - ptr::to_mut_unsafe_ptr(&mut buf[0])); + if buf.len() > 0 { + llvm::LLVMGetStructElementTypes( + struct_ty, ptr::to_mut_unsafe_ptr(&mut buf[0])); + } return move buf; } } |
