Merge pull request #12718 from unknownbrackets/vpl-order

Vpl: Correct allocation order when splitting block
This commit is contained in:
Henrik Rydgård authored and GitHub committed 2020-03-17 09:23:34 +01:00
commit b2c66a304b
1 file changed
+2 -9
+2 -9
View File
@@ -213,10 +213,6 @@ struct SceKernelVplHeader {
do {
auto b = prev->next;
if (b->sizeInBlocks > allocBlocks) {
if (nextFreeBlock_ == b) {
nextFreeBlock_ = prev;
}
prev = b;
b = SplitBlock(b, allocBlocks);
}
@@ -289,16 +285,13 @@ struct SceKernelVplHeader {
void UnlinkFreeBlock(PSPPointer<SceKernelVplBlock> b, PSPPointer<SceKernelVplBlock> prev) {
allocatedInBlocks_ += b->sizeInBlocks;
prev->next = b->next;
if (nextFreeBlock_ == b) {
nextFreeBlock_ = prev;
}
nextFreeBlock_ = prev;
b->next = SentinelPtr();
}
PSPPointer<SceKernelVplBlock> SplitBlock(PSPPointer<SceKernelVplBlock> b, u32 allocBlocks) {
u32 prev = b->next.ptr;
u32 prev = b.ptr;
b->sizeInBlocks -= allocBlocks;
b->next = b + b->sizeInBlocks;
b += b->sizeInBlocks;
b->sizeInBlocks = allocBlocks;