about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2011-08-29 15:25:59 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-08-29 15:27:55 -0700
commitb16a9a984a23ec607ec652286df8bd60ada83047 (patch)
tree0c1e6d0bdf31c9f50924a6cd8d169e6f2ef920f0
parentb623ddfb7e2fb4f90faad454a5c9e6cc072cd0fe (diff)
downloadrust-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.h5
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,