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:🆕:<[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.
This commit is contained in:
parent
c6807bb1b2
commit
620599e886
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user