about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2018-07-06 15:49:52 +0200
committerSimon Sapin <simon.sapin@exyr.org>2018-07-09 23:13:24 +0200
commit239ec7d2dce9c19de16c9ee64addbb834119397c (patch)
tree70a3ac0834334243abf684057a29cb292215021a /src/libstd
parent872effa1183f404cc0df06e58034d05bf590cbad (diff)
downloadrust-239ec7d2dce9c19de16c9ee64addbb834119397c.tar.gz
rust-239ec7d2dce9c19de16c9ee64addbb834119397c.zip
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.rs3
-rw-r--r--src/libstd/lib.rs3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/libstd/alloc.rs b/src/libstd/alloc.rs
index cfdfbe1357d..8db365cd21d 100644
--- a/src/libstd/alloc.rs
+++ b/src/libstd/alloc.rs
@@ -125,7 +125,8 @@ 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 fn rust_oom(layout: Layout) -> ! {
     let hook = HOOK.load(Ordering::SeqCst);
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)]