diff options
| author | Simon Sapin <simon.sapin@exyr.org> | 2018-07-08 16:07:08 +0200 | 
|---|---|---|
| committer | Simon Sapin <simon.sapin@exyr.org> | 2018-07-09 23:13:24 +0200 | 
| commit | 620599e8860b92db1ebbcef3f50671b937aec9cd (patch) | |
| tree | 21a505cec7390ebbd593526c33d1dc675ad1610b /src/libstd/alloc.rs | |
| parent | c6807bb1b282e0c5398aa4e659dbc165b6f3c81b (diff) | |
| download | rust-620599e8860b92db1ebbcef3f50671b937aec9cd.tar.gz rust-620599e8860b92db1ebbcef3f50671b937aec9cd.zip | |
Remove `extern` on the `pub fn rust_oom` lang item in libstd, to match ABI of the declaration in liballoc
This turned out to be important on Windows. Calling `handle_alloc_error(Layout::new::<[u8; 42]>())` caused: ``` Exception thrown at 0x00007FF7C70DC399 in a.exe: 0xC0000005: Access violation reading location 0x000000000000002A. ``` 0x2A equals 42, so it looks like the `Layout::size` field of type `usize` was interpreted as a pointer to read from.
Diffstat (limited to 'src/libstd/alloc.rs')
| -rw-r--r-- | src/libstd/alloc.rs | 2 | 
1 files changed, 1 insertions, 1 deletions
| diff --git a/src/libstd/alloc.rs b/src/libstd/alloc.rs index f6cecbea11f..cfdfbe1357d 100644 --- a/src/libstd/alloc.rs +++ b/src/libstd/alloc.rs @@ -127,7 +127,7 @@ fn default_alloc_error_hook(layout: Layout) { #[doc(hidden)] #[lang = "oom"] #[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 | 
