diff --git a/repos/base/src/core/region_map_component.cc b/repos/base/src/core/region_map_component.cc index dfbd48b802..3932176c82 100644 --- a/repos/base/src/core/region_map_component.cc +++ b/repos/base/src/core/region_map_component.cc @@ -512,8 +512,13 @@ void Region_map_component::detach(Local_addr local_addr) "the beginning of the region ", Hex(region_ptr->base())); Dataspace_component *dsc = region_ptr->dataspace(); - if (!dsc && _diag.enabled) - warning("detach: region of ", this, " may be inconsistent!"); + + if (!dsc) { + if (_diag.enabled) + warning("detach: region of ", this, " may be inconsistent!"); + return; + } + /* inform dataspace about detachment */ dsc->detached_from(region_ptr); diff --git a/repos/base/src/lib/base/avl_tree.cc b/repos/base/src/lib/base/avl_tree.cc index 2a76b03f58..16b2341d8d 100644 --- a/repos/base/src/lib/base/avl_tree.cc +++ b/repos/base/src/lib/base/avl_tree.cc @@ -49,6 +49,11 @@ void Avl_node_base::_rotate_subtree(Avl_node_base *node, Side side, Policy &poli Avl_node_base *node_r = node->_child[!side]; Avl_node_base *node_r_l = node_r->_child[side]; + if (!node_r) { + error("avl rotation node_r is invalid"); + return; + } + /* simple rotation */ if (node_r->_bias() == !side) { diff --git a/repos/base/src/lib/base/lock.cc b/repos/base/src/lib/base/lock.cc index 4c67500cb3..76536664b8 100644 --- a/repos/base/src/lib/base/lock.cc +++ b/repos/base/src/lib/base/lock.cc @@ -98,7 +98,8 @@ void Cancelable_lock::lock() if (!applicants) _last_applicant = &myself; } else { - _last_applicant->applicant_to_wake_up(&myself); + if (_last_applicant) + _last_applicant->applicant_to_wake_up(&myself); _last_applicant = &myself; }