diff --git a/headers/private/kernel/vm/VMArea.h b/headers/private/kernel/vm/VMArea.h index 0c4337a9e4..7ec9281b04 100644 --- a/headers/private/kernel/vm/VMArea.h +++ b/headers/private/kernel/vm/VMArea.h @@ -97,8 +97,8 @@ public: }; public: - char* name; area_id id; + char name[B_OS_NAME_LENGTH]; uint32 protection; uint16 wiring; diff --git a/src/system/kernel/vm/VMArea.cpp b/src/system/kernel/vm/VMArea.cpp index ffe111e13f..cd29076bca 100644 --- a/src/system/kernel/vm/VMArea.cpp +++ b/src/system/kernel/vm/VMArea.cpp @@ -28,7 +28,6 @@ static area_id sNextAreaID = 1; VMArea::VMArea(VMAddressSpace* addressSpace, uint32 wiring, uint32 protection) : - name(NULL), protection(protection), wiring(wiring), memory_type(0), @@ -53,23 +52,14 @@ VMArea::~VMArea() // TODO: This might be stricter than necessary. free_etc(page_protections, flags); - free_etc(name, flags); } status_t VMArea::Init(const char* name, uint32 allocationFlags) { - // restrict the area name to B_OS_NAME_LENGTH - size_t length = strlen(name) + 1; - if (length > B_OS_NAME_LENGTH) - length = B_OS_NAME_LENGTH; - - // clone the name - this->name = (char*)malloc_etc(length, allocationFlags); - if (this->name == NULL) - return B_NO_MEMORY; - strlcpy(this->name, name, length); + // copy the name + strlcpy(this->name, name, B_OS_NAME_LENGTH); id = atomic_add(&sNextAreaID, 1); return B_OK;