diff options
| author | bors <bors@rust-lang.org> | 2014-09-11 04:55:41 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-09-11 04:55:41 +0000 |
| commit | 1f4117f5182249d91c52cc3e384e4577356e1634 (patch) | |
| tree | cfa16e82923ad5048b2bc770296e8b0be6585945 /src/liballoc/heap.rs | |
| parent | 7ea660e678434dc1eea2a3b60bf3bc92c8404745 (diff) | |
| parent | 9639cafd3625429ea558d3202cffdfc851fcf9cf (diff) | |
| download | rust-1f4117f5182249d91c52cc3e384e4577356e1634.tar.gz rust-1f4117f5182249d91c52cc3e384e4577356e1634.zip | |
auto merge of #17110 : thestinger/rust/dst, r=cmr
The pointer in the slice must not be null, because enum representations make that assumption. The `exchange_malloc` function returns a non-null sentinel for the zero size case, and it must not be passed to the `exchange_free` lang item. Since the length is always equal to the true capacity, a branch on the length is enough for most types. Slices of zero size types are statically special cased to never attempt deallocation. This is the same implementation as `Vec<T>`. Closes #14395
Diffstat (limited to 'src/liballoc/heap.rs')
| -rw-r--r-- | src/liballoc/heap.rs | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/src/liballoc/heap.rs b/src/liballoc/heap.rs index 62010ca8916..c7bc1bb9733 100644 --- a/src/liballoc/heap.rs +++ b/src/liballoc/heap.rs @@ -12,7 +12,6 @@ // FIXME: #13996: mark the `allocate` and `reallocate` return value as `noalias` // and `nonnull` -use core::ptr::RawPtr; #[cfg(not(test))] use core::raw; #[cfg(stage0, not(test))] use util; @@ -70,11 +69,6 @@ pub unsafe fn reallocate_inplace(ptr: *mut u8, size: uint, align: uint, /// the value returned by `usable_size` for the requested size. #[inline] pub unsafe fn deallocate(ptr: *mut u8, size: uint, align: uint) { - // FIXME(14395) This is only required for DST ~[T], it should be removed once - // we fix that representation to not use null pointers. - if ptr.is_null() { - return; - } imp::deallocate(ptr, size, align) } |
