diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2013-03-26 13:20:44 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2013-03-26 14:12:13 -0400 |
| commit | 0dc6c414af158370b73bfd379bec84a1a8d480f6 (patch) | |
| tree | e60d00cf788b5ce64e45ed9215c1627ad823178a | |
| parent | 5f52669296bceac4907608a6ac3bfba41de7dab9 (diff) | |
| download | rust-0dc6c414af158370b73bfd379bec84a1a8d480f6.tar.gz rust-0dc6c414af158370b73bfd379bec84a1a8d480f6.zip | |
Check for null in return_to_mut. Fixes #4904.
| -rw-r--r-- | src/libcore/unstable/lang.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libcore/unstable/lang.rs b/src/libcore/unstable/lang.rs index 5d7920ce820..554083fcdb5 100644 --- a/src/libcore/unstable/lang.rs +++ b/src/libcore/unstable/lang.rs @@ -99,8 +99,12 @@ pub unsafe fn borrow_as_imm(a: *u8) { #[lang="return_to_mut"] #[inline(always)] pub unsafe fn return_to_mut(a: *u8) { - let a: *mut BoxRepr = transmute(a); - (*a).header.ref_count &= !FROZEN_BIT; + // Sometimes the box is null, if it is conditionally frozen. + // See e.g. #4904. + if !a.is_null() { + let a: *mut BoxRepr = transmute(a); + (*a).header.ref_count &= !FROZEN_BIT; + } } #[lang="check_not_borrowed"] |
