mirror of
https://github.com/Fennix-Project/Kernel.git
synced 2025-05-28 15:34:33 +00:00
Fix bug causing vector removal to skip elements
This commit is contained in:
parent
ad1bcdab47
commit
0eb8ba0f69
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user