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
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
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);

View File

@ -660,7 +660,6 @@ namespace GraphicalUserInterface
delete this->OverlayBuffer, this->OverlayBuffer = nullptr;
delete this->CursorBuffer, this->CursorBuffer = nullptr;
Display->DeleteBuffer(200);
for (size_t i = 0; i < this->Windows.size(); i++)
this->Windows.remove(i);
this->Windows.clear();
}
}

View File

@ -49,6 +49,7 @@ namespace NetworkARP
netdbg("Removed %s from discovered addresses", IP.v4.ToStringLittleEndian());
delete tmp, tmp = nullptr;
DiscoveredAddresses.remove(i);
break;
}
}
return nullptr;

View File

@ -59,8 +59,7 @@ namespace NetworkInterfaceManager
this->StopNetworkStack();
// Unregister all events
for (size_t i = 0; i < RegisteredEvents.size(); i++)
RegisteredEvents.remove(i);
RegisteredEvents.clear();
foreach (auto inf in Interfaces)
{

View File

@ -145,10 +145,5 @@ namespace Tasking
}
Security::Security() {}
Security::~Security()
{
for (size_t i = 0; i < Tokens.size(); i++)
Tokens.remove(i);
}
Security::~Security() { Tokens.clear(); }
}