Skip to content

Commit c111713

Browse files
committed
overwrite weak new (std::nothrow) calls
1 parent 2b6423e commit c111713

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

cores/esp8266/abi.cpp

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,28 +36,44 @@ extern "C" void __cxa_deleted_virtual(void) __attribute__ ((__noreturn__));
3636

3737
// overwrite weak operators new/new[] definitions
3838

39-
void *operator new(size_t size)
39+
void* operator new(size_t size)
4040
{
4141
void *ret = malloc(size);
4242
if (0 != size && 0 == ret) {
4343
umm_last_fail_alloc_addr = __builtin_return_address(0);
4444
umm_last_fail_alloc_size = size;
45-
#if defined(NEW_OOM_ABORT)
4645
__unhandled_exception(PSTR("OOM"));
47-
#endif
4846
}
49-
return ret;
47+
return ret;
5048
}
5149

52-
void *operator new[](size_t size)
50+
void* operator new[](size_t size)
5351
{
5452
void *ret = malloc(size);
5553
if (0 != size && 0 == ret) {
5654
umm_last_fail_alloc_addr = __builtin_return_address(0);
5755
umm_last_fail_alloc_size = size;
58-
#if defined(NEW_OOM_ABORT)
5956
__unhandled_exception(PSTR("OOM"));
60-
#endif
57+
}
58+
return ret;
59+
}
60+
61+
void* operator new (size_t size, const std::nothrow_t&)
62+
{
63+
void *ret = malloc(size);
64+
if (0 != size && 0 == ret) {
65+
umm_last_fail_alloc_addr = __builtin_return_address(0);
66+
umm_last_fail_alloc_size = size;
67+
}
68+
return ret;
69+
}
70+
71+
void* operator new[] (size_t size, const std::nothrow_t&)
72+
{
73+
void *ret = malloc(size);
74+
if (0 != size && 0 == ret) {
75+
umm_last_fail_alloc_addr = __builtin_return_address(0);
76+
umm_last_fail_alloc_size = size;
6177
}
6278
return ret;
6379
}

0 commit comments

Comments
 (0)