From 8450ab9a2b2cafa9ef4fa624b1843b46a7b41a26 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 8 Jul 2011 16:31:28 -0700 Subject: [PATCH] rustc: Fix a level-of-indirection problem by using size_of() to compute dynamically sized interior vector element sizes instead of field_of_tydesc() --- src/comp/middle/trans.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index bcdb31fb39d0..3e882dac6b9e 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -1407,11 +1407,9 @@ fn dynamic_size_of(&@block_ctxt cx, ty::t t) -> result { ret rslt(bcx, total_size); } case (ty::ty_ivec(?mt)) { - auto rs = field_of_tydesc(cx, mt.ty, false, - abi::tydesc_field_size); + auto rs = size_of(cx, mt.ty); auto bcx = rs.bcx; - auto llunitszptr = rs.val; - auto llunitsz = bcx.build.Load(llunitszptr); + auto llunitsz = rs.val; auto llsz = bcx.build.Add(llsize_of(T_opaque_ivec()), bcx.build.Mul(llunitsz, C_uint(abi::ivec_default_length))); ret rslt(bcx, llsz);