From 1ee9a83de09af1effe48ea13bc5cf89dd8221c8e Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Mon, 9 Jan 2012 15:12:18 +0100 Subject: [PATCH] Fix bug in iface shape code Issue #1437 --- src/rt/rust_shape.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/rt/rust_shape.h b/src/rt/rust_shape.h index 41be4c43d8b0..e3041f238544 100644 --- a/src/rt/rust_shape.h +++ b/src/rt/rust_shape.h @@ -1005,7 +1005,10 @@ data::walk_iface_value(ptr &dp) { type_desc *valtydesc = *reinterpret_cast(body_ptr); ptr value_dp(body_ptr + sizeof(void*) * 2); - T sub(*static_cast(this), valtydesc->shape + 2, NULL, NULL, + // FIXME The 5 is a hard-coded way to skip over a struct shape + // header and the first two (number-typed) fields. This is too + // fragile, but I didn't see a good way to properly encode it. + T sub(*static_cast(this), valtydesc->shape + 5, NULL, NULL, value_dp); sub.align = true; sub.walk();