Skip to content

Commit c0eba39

Browse files
committed
Fix build on GCC, c++14 sized deallocation
1 parent e3b4e72 commit c0eba39

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/crt/cxxabi.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
#include <cstddef>
33
#include <cstring>
44
#include <kprint.hpp>
5+
extern "C" void* malloc(size_t);
6+
extern "C" void free(void*);
57

68
//#define DEBUG_HEAP
79
#ifdef DEBUG_HEAP
@@ -33,6 +35,15 @@ void operator delete[](void* ptr)
3335
HPRINT("operator delete[]: %p\n", ptr);
3436
free(ptr);
3537
}
38+
// C++14 sized deallocation
39+
void operator delete(void* ptr, std::size_t)
40+
{
41+
free(ptr);
42+
}
43+
void operator delete [](void* ptr, std::size_t)
44+
{
45+
free(ptr);
46+
}
3647

3748
extern "C" void __cxa_pure_virtual()
3849
{

src/crt/malloc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include <errno.h>
66

77
static inline size_t word_align(size_t size) {
8-
return size + (sizeof(size_t) - 1) & ~(sizeof(size_t) - 1);
8+
return size + ((sizeof(size_t) - 1) & ~(sizeof(size_t) - 1));
99
}
1010

1111
struct chunk {

0 commit comments

Comments
 (0)