When doing a subregion or alias and the SR/Aliased region is NULL, perform no action. This makes the memory API tolerant of API calls following an earlier failure with setting up these dependencies. This in turn allows removal of some of the constant error-checking boiler-plate from machine models.
Cc: Paolo Bonzini <pbonz...@redhat.com> Signed-off-by: Peter Crosthwaite <crosthwaite.pe...@gmail.com> --- memory.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/memory.c b/memory.c index 0d8b2d9..2d03cb7 100644 --- a/memory.c +++ b/memory.c @@ -1266,6 +1266,9 @@ void memory_region_init_alias(MemoryRegion *mr, hwaddr offset, uint64_t size) { + if (!orig) { + return; + } memory_region_init(mr, owner, name, size); mr->alias = orig; mr->alias_offset = offset; @@ -1759,6 +1762,9 @@ void memory_region_add_subregion(MemoryRegion *mr, hwaddr offset, MemoryRegion *subregion) { + if (!subregion) { + return; + } subregion->may_overlap = false; subregion->priority = 0; memory_region_add_subregion_common(mr, offset, subregion); @@ -1769,6 +1775,9 @@ void memory_region_add_subregion_overlap(MemoryRegion *mr, MemoryRegion *subregion, int priority) { + if (!subregion) { + return; + } subregion->may_overlap = true; subregion->priority = priority; memory_region_add_subregion_common(mr, offset, subregion); -- 1.9.1