Author: axeld Date: 2010-08-17 17:39:26 +0200 (Tue, 17 Aug 2010) New Revision: 38194 Changeset: http://dev.haiku-os.org/changeset/38194 Modified: haiku/trunk/src/system/kernel/vm/VMUserAddressSpace.cpp Log: * Fixed CID 1472: "next" could be NULL and dereferenced. * Simplified code a bit. Modified: haiku/trunk/src/system/kernel/vm/VMUserAddressSpace.cpp =================================================================== --- haiku/trunk/src/system/kernel/vm/VMUserAddressSpace.cpp 2010-08-17 15:34:24 UTC (rev 38193) +++ haiku/trunk/src/system/kernel/vm/VMUserAddressSpace.cpp 2010-08-17 15:39:26 UTC (rev 38194) @@ -1,6 +1,6 @@ /* * Copyright 2009-2010, Ingo Weinhold, ingo_weinhold@xxxxxxx - * Copyright 2002-2009, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx + * Copyright 2002-2010, Axel Dörfler, axeld@xxxxxxxxxxxxxxxxx * Distributed under the terms of the MIT License. * * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. @@ -192,24 +192,19 @@ { VMUserArea* next = fAreas.GetNext(static_cast<VMUserArea*>(area)); addr_t newEnd = area->Base() + (newSize - 1); - if (next == NULL) { - if (fEndAddress >= newEnd) - return true; - } else { - if (next->Base() > newEnd) - return true; - } + if (next == NULL) + return fEndAddress >= newEnd; + + if (next->Base() > newEnd) + return true; + // If the area was created inside a reserved area, it can // also be resized in that area // TODO: if there is free space after the reserved area, it could // be used as well... - if (next->id == RESERVED_AREA_ID && next->cache_offset <= area->Base() - && next->Base() + (next->Size() - 1) >= newEnd) { - return true; - } - - return false; + return next->id == RESERVED_AREA_ID && next->cache_offset <= area->Base() + && next->Base() + (next->Size() - 1) >= newEnd; }