Check for null in return_to_mut. Fixes #4904.

This commit is contained in:
Niko Matsakis 2013-03-26 13:20:44 -04:00
parent 5f52669296
commit 0dc6c414af

View file

@ -99,8 +99,12 @@ pub unsafe fn borrow_as_imm(a: *u8) {
#[lang="return_to_mut"] #[lang="return_to_mut"]
#[inline(always)] #[inline(always)]
pub unsafe fn return_to_mut(a: *u8) { pub unsafe fn return_to_mut(a: *u8) {
let a: *mut BoxRepr = transmute(a); // Sometimes the box is null, if it is conditionally frozen.
(*a).header.ref_count &= !FROZEN_BIT; // See e.g. #4904.
if !a.is_null() {
let a: *mut BoxRepr = transmute(a);
(*a).header.ref_count &= !FROZEN_BIT;
}
} }
#[lang="check_not_borrowed"] #[lang="check_not_borrowed"]