summary refs log tree commit diff
path: root/src/rt
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2011-09-01 11:46:36 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-09-01 11:47:58 -0700
commit9d00ef9a461ec04962f4ffbd6567364c0c2e9d73 (patch)
treea5b3c58ea4efc15f1a6aa5e08377a12938c21f1a /src/rt
parentbbac2dd7687608f1865539e2be92201d127b43a8 (diff)
downloadrust-9d00ef9a461ec04962f4ffbd6567364c0c2e9d73.tar.gz
rust-9d00ef9a461ec04962f4ffbd6567364c0c2e9d73.zip
rt: Make logging more resilient to null vector pointers (useful when debugging GC)
Diffstat (limited to 'src/rt')
-rw-r--r--src/rt/rust_shape.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/rt/rust_shape.h b/src/rt/rust_shape.h
index 3b3eda5ce57..dd09940a539 100644
--- a/src/rt/rust_shape.h
+++ b/src/rt/rust_shape.h
@@ -1015,11 +1015,17 @@ private:
       prefix("") {}
 
     void walk_evec(bool is_pod, uint16_t sp_size) {
-        walk_vec(is_pod, get_evec_data_range(dp));
+        if (!get_dp<void *>(dp))
+            out << prefix << "(null)";
+        else
+            walk_vec(is_pod, get_evec_data_range(dp));
     }
 
     void walk_vec(bool is_pod, uint16_t sp_size) {
-        walk_vec(is_pod, get_vec_data_range(dp));
+        if (!get_dp<void *>(dp))
+            out << prefix << "(null)";
+        else
+            walk_vec(is_pod, get_vec_data_range(dp));
     }
 
     void walk_tag(tag_info &tinfo, uint32_t tag_variant) {