From 3405c548e8f65c9955dfc89188f3cd9db4432bba Mon Sep 17 00:00:00 2001 From: Elliott Slaughter Date: Mon, 20 Aug 2012 10:09:22 -0700 Subject: [PATCH] gc: Avoid freeing null pointers. --- src/libcore/gc.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libcore/gc.rs b/src/libcore/gc.rs index 066fa0b2e43..697c6fcdfb4 100644 --- a/src/libcore/gc.rs +++ b/src/libcore/gc.rs @@ -102,6 +102,12 @@ unsafe fn walk_gc_roots(mem: Memory, visitor: Visitor) { match sp { Some(sp_info) => { for walk_safe_point(frame.fp, sp_info) |root, tydesc| { + // Skip null pointers, which can occur when a + // unique pointer has already been freed. + if ptr::is_null(*root) { + again; + } + if ptr::is_null(tydesc) { // Root is a generic box. let refcount = **root; -- GitLab