[*] Fix pointer alignment issue in NT sections
[*] Fix possible spinlocks
This commit is contained in:
parent
e5e36bd887
commit
299a1c5312
@ -142,13 +142,15 @@ namespace Aurora::Process
|
||||
auto pSection = IMAGE_FIRST_SECTION(nt);
|
||||
auto pSectionCur = pSection;
|
||||
|
||||
auto imageBase = nt->OptionalHeader.ImageBase;
|
||||
|
||||
for (auto i = 0; i < nt->FileHeader.NumberOfSections; i++)
|
||||
{
|
||||
auto cur = pSectionCur++;
|
||||
Segment seg;
|
||||
|
||||
seg.origVa = cur->VirtualAddress - reinterpret_cast<AuUInt>(mod) + offset;
|
||||
seg.baseVa = cur->VirtualAddress;
|
||||
seg.origVa = cur->VirtualAddress + offset;
|
||||
seg.baseVa = cur->VirtualAddress + imageBase;
|
||||
seg.size = cur->SizeOfRawData;
|
||||
seg.fsOff = cur->PointerToRawData;
|
||||
|
||||
|
@ -130,13 +130,11 @@ namespace Aurora::Process
|
||||
|
||||
static AuOptional<Segment> FindInCache(AuUInt pointer)
|
||||
{
|
||||
AU_LOCK_GUARD(gMutexUnique);
|
||||
|
||||
auto curPtr = ToLowestPageAlignment(pointer);
|
||||
auto temp = GetSegmentCache(curPtr);
|
||||
if (temp.has_value()) return temp;
|
||||
|
||||
for (int i = 0; i < kPageBufferPad; i++)
|
||||
for (int i = 0; i < kPageBufferPad + 1; i++)
|
||||
{
|
||||
curPtr -= kMinPageAlignment;
|
||||
temp = GetSegmentCache(curPtr); // TODO: i dont want to start from the top of the tree, thats stupid
|
||||
|
Loading…
Reference in New Issue
Block a user