From d46c79b428239a3eb232b3ec2de1bd59c72915f7 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Thu, 1 Nov 2012 21:41:31 +0100 Subject: [PATCH] libc_lock_pipe: match alloc. and dealloc. funcs Fixes #460. --- libports/src/lib/libc_lock_pipe/plugin.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libports/src/lib/libc_lock_pipe/plugin.cc b/libports/src/lib/libc_lock_pipe/plugin.cc index 7c7f2387a7..b17de62a8a 100644 --- a/libports/src/lib/libc_lock_pipe/plugin.cc +++ b/libports/src/lib/libc_lock_pipe/plugin.cc @@ -142,15 +142,13 @@ namespace { } Genode::memset(_buffer, 0, PIPE_BUF_SIZE); - _lock_state = (Genode::Cancelable_lock::State*) - malloc(sizeof(Genode::Cancelable_lock::State)); + _lock_state = new (Genode::env()->heap()) + Genode::Cancelable_lock::State(Genode::Lock::LOCKED); if (!_lock_state) { PERR("pipe lock_state allocation failed"); } - *_lock_state = Genode::Lock::LOCKED; - _lock = new (Genode::env()->heap()) Genode::Lock(*_lock_state); if (!_lock) { PERR("pipe lock allocation failed"); @@ -173,7 +171,7 @@ namespace { context(_partner)->set_partner(0); } else { /* partner fd is already destroyed -> free shared resources */ - destroy(Genode::env()->heap(), _buffer); + free(_buffer); destroy(Genode::env()->heap(), _lock); destroy(Genode::env()->heap(), _lock_state); }