diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2011-08-29 15:25:59 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2011-08-29 15:27:55 -0700 |
| commit | b16a9a984a23ec607ec652286df8bd60ada83047 (patch) | |
| tree | 0c1e6d0bdf31c9f50924a6cd8d169e6f2ef920f0 | |
| parent | b623ddfb7e2fb4f90faad454a5c9e6cc072cd0fe (diff) | |
| download | rust-b16a9a984a23ec607ec652286df8bd60ada83047.tar.gz rust-b16a9a984a23ec607ec652286df8bd60ada83047.zip | |
rt: Don't dereference a null pointer when traversing a function with no environment
| -rw-r--r-- | src/rt/rust_shape.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/rt/rust_shape.h b/src/rt/rust_shape.h index 2ce4fcb5645..e568d480164 100644 --- a/src/rt/rust_shape.h +++ b/src/rt/rust_shape.h @@ -868,11 +868,12 @@ data<T,U>::walk_fn_contents(bool align, ptr &dp) { dp += sizeof(void *); // Skip over the code pointer. uint8_t *box_ptr = bump_dp<uint8_t *>(dp); + if (!box_ptr) + return; + type_desc *subtydesc = *reinterpret_cast<type_desc **>(box_ptr + sizeof(void *)); ptr closure_dp(box_ptr + sizeof(void *)); - if (!box_ptr) - return; arena arena; type_param *params = type_param::from_fn_shape(subtydesc->shape, |
