diff --git a/cores/esp8266/abi.cpp b/cores/esp8266/abi.cpp index 71967e63e5..6a2c0928c8 100644 --- a/cores/esp8266/abi.cpp +++ b/cores/esp8266/abi.cpp @@ -31,6 +31,29 @@ extern int umm_last_fail_alloc_size; extern "C" void __cxa_pure_virtual(void) __attribute__ ((__noreturn__)); extern "C" void __cxa_deleted_virtual(void) __attribute__ ((__noreturn__)); + +#ifndef __cpp_exceptions +void *operator new(size_t size) +{ + void *ret = malloc(size); + if (0 != size && 0 == ret) { + umm_last_fail_alloc_addr = __builtin_return_address(0); + umm_last_fail_alloc_size = size; + } + return ret; +} + +void *operator new[](size_t size) +{ + void *ret = malloc(size); + if (0 != size && 0 == ret) { + umm_last_fail_alloc_addr = __builtin_return_address(0); + umm_last_fail_alloc_size = size; + } + return ret; +} +#endif + void __cxa_pure_virtual(void) { panic();