about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-07-10 15:20:17 +0000
committerbors <bors@rust-lang.org>2018-07-10 15:20:17 +0000
commitce45cbb053bdde569b49ef12125c26158cf2ca79 (patch)
tree90e2ca421a883b698803526f7e2c1a20a018e3b2 /src/libstd
parentfc491526dd0b5d8c8c25faa6400599e08ede1907 (diff)
parent239ec7d2dce9c19de16c9ee64addbb834119397c (diff)
downloadrust-ce45cbb053bdde569b49ef12125c26158cf2ca79.tar.gz
rust-ce45cbb053bdde569b49ef12125c26158cf2ca79.zip
Auto merge of #52191 - SimonSapin:alloc_error_handler, r=alexcrichton
Implement #[alloc_error_handler]

This to-be-stable attribute is equivalent to `#[lang = "oom"]`. It is required when using the `alloc` crate without the `std` crate. It is called by `handle_alloc_error`, which is in turned called by "infallible" allocations APIs such as `Vec::push`.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/alloc.rs5
-rw-r--r--src/libstd/lib.rs3
2 files changed, 5 insertions, 3 deletions
diff --git a/src/libstd/alloc.rs b/src/libstd/alloc.rs
index f6cecbea11f..8db365cd21d 100644
--- a/src/libstd/alloc.rs
+++ b/src/libstd/alloc.rs
@@ -125,9 +125,10 @@ fn default_alloc_error_hook(layout: Layout) {
 
 #[cfg(not(test))]
 #[doc(hidden)]
-#[lang = "oom"]
+#[cfg_attr(stage0, lang = "oom")]
+#[cfg_attr(not(stage0), alloc_error_handler)]
 #[unstable(feature = "alloc_internals", issue = "0")]
-pub extern fn rust_oom(layout: Layout) -> ! {
+pub fn rust_oom(layout: Layout) -> ! {
     let hook = HOOK.load(Ordering::SeqCst);
     let hook: fn(Layout) = if hook.is_null() {
         default_alloc_error_hook
diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs
index d73cb1f8349..fec14b8d67d 100644
--- a/src/libstd/lib.rs
+++ b/src/libstd/lib.rs
@@ -233,8 +233,9 @@
 // std is implemented with unstable features, many of which are internal
 // compiler details that will never be stable
 #![feature(alloc)]
-#![feature(allocator_api)]
+#![feature(alloc_error_handler)]
 #![feature(alloc_system)]
+#![feature(allocator_api)]
 #![feature(allocator_internals)]
 #![feature(allow_internal_unsafe)]
 #![feature(allow_internal_unstable)]