|
|
@ -174,6 +174,10 @@ ResultCode Process::HeapFree(VAddr target, u32 size) { |
|
|
return ERR_INVALID_ADDRESS; |
|
|
return ERR_INVALID_ADDRESS; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (size == 0) { |
|
|
|
|
|
return RESULT_SUCCESS; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
ResultCode result = vm_manager.UnmapRange(target, size); |
|
|
ResultCode result = vm_manager.UnmapRange(target, size); |
|
|
if (result.IsError()) return result; |
|
|
if (result.IsError()) return result; |
|
|
|
|
|
|
|
|
@ -226,6 +230,10 @@ ResultCode Process::LinearFree(VAddr target, u32 size) { |
|
|
return ERR_INVALID_ADDRESS; |
|
|
return ERR_INVALID_ADDRESS; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (size == 0) { |
|
|
|
|
|
return RESULT_SUCCESS; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
VAddr heap_end = GetLinearHeapBase() + (u32)linheap_memory->size(); |
|
|
VAddr heap_end = GetLinearHeapBase() + (u32)linheap_memory->size(); |
|
|
if (target + size > heap_end) { |
|
|
if (target + size > heap_end) { |
|
|
return ERR_INVALID_ADDRESS_STATE; |
|
|
return ERR_INVALID_ADDRESS_STATE; |
|
|
|