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:
@@ -127,7 +127,7 @@ fn default_alloc_error_hook(layout: Layout) {
|
|||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
#[lang = "oom"]
|
#[lang = "oom"]
|
||||||
#[unstable(feature = "alloc_internals", issue = "0")]
|
#[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 = HOOK.load(Ordering::SeqCst);
|
||||||
let hook: fn(Layout) = if hook.is_null() {
|
let hook: fn(Layout) = if hook.is_null() {
|
||||||
default_alloc_error_hook
|
default_alloc_error_hook
|
||||||
|
|||||||
Reference in New Issue
Block a user