diff options
Diffstat (limited to 'src/rt/rust_shape.h')
| -rw-r--r-- | src/rt/rust_shape.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/rt/rust_shape.h b/src/rt/rust_shape.h index 41be4c43d8b..e3041f23854 100644 --- a/src/rt/rust_shape.h +++ b/src/rt/rust_shape.h @@ -1005,7 +1005,10 @@ data<T,U>::walk_iface_value(ptr &dp) { type_desc *valtydesc = *reinterpret_cast<type_desc **>(body_ptr); ptr value_dp(body_ptr + sizeof(void*) * 2); - T sub(*static_cast<T *>(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<T *>(this), valtydesc->shape + 5, NULL, NULL, value_dp); sub.align = true; sub.walk(); |
