From 49ee13168b6547f56aced4e9d25548b09aaa0c36 Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Thu, 20 Feb 2014 13:37:12 +0100 Subject: [PATCH] libc: malloc do not destruct allocator --- libports/src/lib/libc/malloc.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libports/src/lib/libc/malloc.cc b/libports/src/lib/libc/malloc.cc index 8173365e9..0d47da4a8 100644 --- a/libports/src/lib/libc/malloc.cc +++ b/libports/src/lib/libc/malloc.cc @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -90,6 +91,8 @@ class Malloc : public Genode::Allocator } } + ~Malloc() { PDBG("CALLED"); } + /** * Allocator interface */ @@ -157,8 +160,14 @@ class Malloc : public Genode::Allocator static Genode::Allocator *allocator() { - static Malloc _m(Genode::env()->heap()); - return &_m; + static bool constructed = 0; + static char placeholder[sizeof(Malloc)]; + if (!constructed) { + Genode::construct_at(placeholder, Genode::env()->heap()); + constructed = 1; + } + + return reinterpret_cast(placeholder); }