diff --git a/repos/base/src/core/include/rm_session_component.h b/repos/base/src/core/include/rm_session_component.h index b78a67221d..fbf905f8ed 100644 --- a/repos/base/src/core/include/rm_session_component.h +++ b/repos/base/src/core/include/rm_session_component.h @@ -77,13 +77,16 @@ class Genode::Rm_session_component : public Rpc_object { Lock::Guard guard(_region_maps_lock); - Region_map_component *rm = - new (_md_alloc) - Region_map_component(_ep, _md_alloc, _pager_ep, 0, size); + try { + Region_map_component *rm = + new (_md_alloc) + Region_map_component(_ep, _md_alloc, _pager_ep, 0, size); - _region_maps.insert(rm); + _region_maps.insert(rm); - return rm->cap(); + return rm->cap(); + } + catch (Allocator::Out_of_memory) { throw Out_of_metadata(); } } void destroy(Capability rm) override