From f88cd3fbcae90bebfb9d7825677eb92c38f778f6 Mon Sep 17 00:00:00 2001 From: Kevin Bracey Date: Wed, 29 May 2019 17:14:44 +0300 Subject: [PATCH] Add C++14 sized delete operators Correct C++14 operation of the alloc wrappers requires us to define custom sized delete operators. Their presence won't cause any problem for people compiling as C++03 or C++11. --- platform/mbed_retarget.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/platform/mbed_retarget.cpp b/platform/mbed_retarget.cpp index aff7dee8611..8a5e35fffc0 100644 --- a/platform/mbed_retarget.cpp +++ b/platform/mbed_retarget.cpp @@ -1571,11 +1571,22 @@ void operator delete (void *ptr) { free_wrapper(ptr, MBED_CALLER_ADDR()); } + +void operator delete (void *ptr, std::size_t) +{ + free_wrapper(ptr, MBED_CALLER_ADDR()); +} + void operator delete[](void *ptr) { free_wrapper(ptr, MBED_CALLER_ADDR()); } +void operator delete[](void *ptr, std::size_t) +{ + free_wrapper(ptr, MBED_CALLER_ADDR()); +} + #elif defined(MBED_MEM_TRACING_ENABLED) && defined(__GNUC__) #include @@ -1616,11 +1627,21 @@ void operator delete (void *ptr) free_wrapper(_REENT, ptr, MBED_CALLER_ADDR()); } +void operator delete (void *ptr, std::size_t) +{ + free_wrapper(_REENT, ptr, MBED_CALLER_ADDR()); +} + void operator delete[](void *ptr) { free_wrapper(_REENT, ptr, MBED_CALLER_ADDR()); } +void operator delete[](void *ptr, std::size_t) +{ + free_wrapper(_REENT, ptr, MBED_CALLER_ADDR()); +} + #else void *operator new (std::size_t count) @@ -1655,11 +1676,22 @@ void operator delete (void *ptr) { free(ptr); } + +void operator delete (void *ptr, std::size_t) +{ + free(ptr); +} + void operator delete[](void *ptr) { free(ptr); } +void operator delete[](void *ptr, std::size_t) +{ + free(ptr); +} + #endif /* @brief standard c library clock() function.