libc: avoid using placement new operator

Issue #2106
This commit is contained in:
Norman Feske 2021-03-05 17:17:53 +01:00
parent 8c7d34ff21
commit 1e0d843464
2 changed files with 6 additions and 13 deletions

View File

@ -47,20 +47,13 @@ namespace Libc {
MAX_CHUNK_SIZE = 1024*1024
};
class Dataspace : public List<Dataspace>::Element
struct Dataspace : List<Dataspace>::Element
{
public:
Ram_dataspace_capability cap;
void *local_addr;
Ram_dataspace_capability cap;
void *local_addr;
Dataspace(Ram_dataspace_capability c, void *a)
: cap(c), local_addr(a) {}
inline void * operator new(__SIZE_TYPE__, void* addr) {
return addr; }
inline void operator delete(void*) { }
Dataspace(Ram_dataspace_capability c, void *a)
: cap(c), local_addr(a) {}
};
class Dataspace_pool : public List<Dataspace>

View File

@ -77,7 +77,7 @@ int Libc::Mem_alloc_impl::Dataspace_pool::expand(size_t size, Range_allocator *a
}
/* add dataspace information to list of dataspaces */
Dataspace *ds = new (ds_addr) Dataspace(new_ds_cap, local_addr);
Dataspace *ds = construct_at<Dataspace>(ds_addr, new_ds_cap, local_addr);
insert(ds);
return 0;