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

View File

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

View File

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

View File

@ -161,7 +161,7 @@ namespace UniversalAsynchronousReceiverTransmitter
SafeFunction NIF Events::~Events() 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) if (RegisteredEvents[i] == this)
{ {
RegisteredEvents.remove(i); RegisteredEvents.remove(i);

View File

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

View File

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

View File

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

View File

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