diff --git a/repos/base-linux/src/lib/base/region_map_client.cc b/repos/base-linux/src/lib/base/region_map_client.cc index 3b50f50f9..e45c3fbdc 100644 --- a/repos/base-linux/src/lib/base/region_map_client.cc +++ b/repos/base-linux/src/lib/base/region_map_client.cc @@ -19,7 +19,7 @@ using namespace Genode; -class Invalid_capability : public Genode::Exception {}; +class Capability_invalid : public Genode::Exception {}; /** * Return pointer to locally implemented region map @@ -29,7 +29,7 @@ class Invalid_capability : public Genode::Exception {}; static Region_map *_local(Capability cap) { if (!cap.valid()) - throw Invalid_capability(); + throw Capability_invalid(); return Local_capability::deref(cap); } @@ -67,6 +67,9 @@ void Region_map_client::fault_handler(Signal_context_capability /*handler*/) Region_map::State Region_map_client::state() { return _local(rpc_cap())->state(); } -Dataspace_capability Region_map_client::dataspace() { - return _local(rpc_cap()) ? _local(rpc_cap())->dataspace() : Dataspace_capability(); } - +Dataspace_capability Region_map_client::dataspace() +{ + try { + return _local(rpc_cap())->dataspace(); + } catch (Capability_invalid&) { return Dataspace_capability(); } +}