Fix bug causing vector removal to skip elements

This commit is contained in:
Alex
2023-04-20 03:24:23 +03:00
parent ad1bcdab47
commit 0eb8ba0f69
8 changed files with 16 additions and 12 deletions

View File

@@ -83,8 +83,8 @@ namespace Driver
}
if (drv.MemTrk)
delete drv.MemTrk, drv.MemTrk = nullptr;
Drivers.remove(drv);
}
Drivers.clear();
}
bool Driver::UnloadDriver(unsigned long DUID)
@@ -268,7 +268,10 @@ namespace Driver
{
SmartLock(DriverInterruptLock); /* Lock in case of multiple interrupts firing at the same time */
if (!this->Enabled)
{
debug("Interrupt hook is not enabled");
return;
}
if (!Handle.InterruptCallback)
{

View File

@@ -131,6 +131,7 @@ namespace Interrupts
{
#if defined(a64)
CPU::x64::TrapFrame *Frame = (CPU::x64::TrapFrame *)Data;
// debug("IRQ%ld", Frame->InterruptNumber - 32);
memmove(InterruptFrames + 1, InterruptFrames, sizeof(InterruptFrames) - sizeof(InterruptFrames[0]));
InterruptFrames[0] = (void *)Frame->rip;

View File

@@ -43,6 +43,8 @@ namespace Random
RDRANDFlag = cpuid.ECX.RDRAND;
}
}
else
RDRANDFlag = 0;
}
if (RDRANDFlag)
@@ -80,6 +82,8 @@ namespace Random
RDRANDFlag = cpuid.ECX.RDRAND;
}
}
else
RDRANDFlag = 0;
}
if (RDRANDFlag)
@@ -117,6 +121,8 @@ namespace Random
RDRANDFlag = cpuid.ECX.RDRAND;
}
}
else
RDRANDFlag = 0;
}
if (RDRANDFlag)

View File

@@ -161,7 +161,7 @@ namespace UniversalAsynchronousReceiverTransmitter
SafeFunction NIF Events::~Events()
{
for (uintptr_t i = 0; i < RegisteredEvents.size(); i++)
for (size_t i = 0; i < RegisteredEvents.size(); i++)
if (RegisteredEvents[i] == this)
{
RegisteredEvents.remove(i);