From 2b75445ac18dfbd57154ee7b0a5bb8f97bf41bf2 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Mon, 7 May 2018 15:02:04 +0200 Subject: [PATCH] usb_block_drv: keep driver instance between sessions Fixes #2813 --- repos/os/src/drivers/usb_block/main.cc | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/repos/os/src/drivers/usb_block/main.cc b/repos/os/src/drivers/usb_block/main.cc index 146ad6ff7a..2644275564 100644 --- a/repos/os/src/drivers/usb_block/main.cc +++ b/repos/os/src/drivers/usb_block/main.cc @@ -808,23 +808,16 @@ struct Usb::Main Env &env; Allocator &alloc; Signal_context_capability sigh; - - Usb::Block_driver *driver = nullptr; + Usb::Block_driver driver; Factory(Env &env, Allocator &alloc, Signal_context_capability sigh) - : env(env), alloc(alloc), sigh(sigh) - { - driver = new (&alloc) Usb::Block_driver(env, alloc, sigh); - } + : env(env), alloc(alloc), sigh(sigh), + driver(env, alloc, sigh) { } - Block::Driver *create() override { return driver; } + Block::Driver *create() override { return &driver; } - void destroy(Block::Driver *driver) override - { - Genode::destroy(alloc, driver); - driver = nullptr; - } + void destroy(Block::Driver *) override { } private: