about summary refs log tree commit diff
path: root/src/libstd/alloc.rs
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/alloc.rs
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/alloc.rs')
-rw-r--r--src/libstd/alloc.rs5
1 files changed, 3 insertions, 2 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