mirror of
https://github.com/Fennix-Project/Kernel.git
synced 2025-05-25 22:14:37 +00:00
Prevent dangling pointer
This commit is contained in:
parent
855384aead
commit
d7c9b7ab02
@ -49,7 +49,7 @@ namespace Disk
|
||||
memcpy(&drive->Table, RWBuffer, sizeof(PartitionTable));
|
||||
|
||||
/*
|
||||
----> Add to devfs the disk
|
||||
TODO: Add to devfs the disk
|
||||
*/
|
||||
|
||||
if (drive->Table.GPT.Signature == GPT_MAGIC)
|
||||
@ -101,7 +101,7 @@ namespace Disk
|
||||
sprintf(PartitionName, "sd%ldp%ld", drives.size() - 1, partition->Index);
|
||||
|
||||
/*
|
||||
----> Add to devfs the disk
|
||||
TODO: Add to devfs the disk
|
||||
*/
|
||||
|
||||
delete[] PartitionName;
|
||||
@ -131,7 +131,7 @@ namespace Disk
|
||||
sprintf(PartitionName, "sd%ldp%ld", drives.size() - 1, partition->Index);
|
||||
|
||||
/*
|
||||
----> Add to devfs the disk
|
||||
TODO: Add to devfs the disk
|
||||
*/
|
||||
|
||||
delete[] PartitionName;
|
||||
|
@ -41,13 +41,14 @@ namespace Driver
|
||||
debug("Stopping & unloading driver %ld [%#lx]", drv->DriverUID, drv->Address);
|
||||
DriverManager->IOCB(drv->DriverUID, (void *)&callback);
|
||||
|
||||
delete drv->MemTrk;
|
||||
delete drv->MemTrk, drv->MemTrk = nullptr;
|
||||
for (size_t j = 0; j < sizeof(drv->InterruptHook) / sizeof(drv->InterruptHook[0]); j++)
|
||||
{
|
||||
if (!drv->InterruptHook[j])
|
||||
continue;
|
||||
delete drv->InterruptHook[j];
|
||||
delete drv->InterruptHook[j], drv->InterruptHook[j] = nullptr;
|
||||
}
|
||||
delete drv, drv = nullptr;
|
||||
Drivers.remove(i);
|
||||
}
|
||||
}
|
||||
@ -65,13 +66,14 @@ namespace Driver
|
||||
debug("Stopping and unloading driver %ld [%#lx]", drv->DriverUID, drv->Address);
|
||||
this->IOCB(drv->DriverUID, (void *)&callback);
|
||||
|
||||
delete drv->MemTrk;
|
||||
delete drv->MemTrk, drv->MemTrk = nullptr;
|
||||
for (size_t i = 0; i < sizeof(drv->InterruptHook) / sizeof(drv->InterruptHook[0]); i++)
|
||||
{
|
||||
if (!drv->InterruptHook[i])
|
||||
continue;
|
||||
delete drv->InterruptHook[i];
|
||||
delete drv->InterruptHook[i], drv->InterruptHook[i] = nullptr;
|
||||
}
|
||||
delete drv, drv = nullptr;
|
||||
Drivers.remove(i);
|
||||
return true;
|
||||
}
|
||||
|
@ -50,13 +50,13 @@ namespace Driver
|
||||
int CallbackRet = ((int (*)(KernelCallback *))((uintptr_t)fexExtended->Driver.Callback + (uintptr_t)fex))(KCallback);
|
||||
if (CallbackRet == DriverReturnCode::NOT_IMPLEMENTED)
|
||||
{
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
error("Driver %s is not implemented", fexExtended->Driver.Name);
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
else if (CallbackRet != DriverReturnCode::OK)
|
||||
{
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet);
|
||||
return DriverCode::DRIVER_RETURNED_ERROR;
|
||||
}
|
||||
@ -98,7 +98,7 @@ namespace Driver
|
||||
|
||||
if (CallDriverEntryPoint(fex, KAPI) != DriverCode::OK)
|
||||
{
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::DRIVER_RETURNED_ERROR;
|
||||
}
|
||||
debug("Starting driver %s (offset: %#lx)", fexExtended->Driver.Name, fex);
|
||||
@ -110,7 +110,7 @@ namespace Driver
|
||||
default:
|
||||
{
|
||||
warn("Unknown driver type: %d", fexExtended->Driver.Type);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::UNKNOWN_DRIVER_TYPE;
|
||||
}
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ namespace Driver
|
||||
}
|
||||
|
||||
fixme("Display driver: %s", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -147,7 +147,7 @@ namespace Driver
|
||||
}
|
||||
|
||||
fixme("Network driver: %s", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -208,13 +208,13 @@ namespace Driver
|
||||
if (CallbackRet == DriverReturnCode::NOT_IMPLEMENTED)
|
||||
{
|
||||
error("Driver %s is not implemented", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
else if (CallbackRet != DriverReturnCode::OK)
|
||||
{
|
||||
error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::DRIVER_RETURNED_ERROR;
|
||||
}
|
||||
|
||||
@ -267,7 +267,7 @@ namespace Driver
|
||||
}
|
||||
|
||||
fixme("Filesystem driver: %s", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -347,15 +347,15 @@ namespace Driver
|
||||
if (CallbackRet == DriverReturnCode::NOT_IMPLEMENTED)
|
||||
{
|
||||
error("Driver %s is not implemented", fexExtended->Driver.Name);
|
||||
delete InterruptHook;
|
||||
delete mem;
|
||||
delete InterruptHook, InterruptHook = nullptr;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
else if (CallbackRet != DriverReturnCode::OK)
|
||||
{
|
||||
error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet);
|
||||
delete InterruptHook;
|
||||
delete mem;
|
||||
delete InterruptHook, InterruptHook = nullptr;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::DRIVER_RETURNED_ERROR;
|
||||
}
|
||||
|
||||
@ -412,7 +412,7 @@ namespace Driver
|
||||
}
|
||||
|
||||
fixme("Audio driver: %s", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -435,7 +435,7 @@ namespace Driver
|
||||
|
||||
if (CallDriverEntryPoint(fex, KAPI) != DriverCode::OK)
|
||||
{
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::DRIVER_RETURNED_ERROR;
|
||||
}
|
||||
debug("Starting driver %s (offset: %#lx)", fexExtended->Driver.Name, fex);
|
||||
@ -459,7 +459,7 @@ namespace Driver
|
||||
default:
|
||||
{
|
||||
warn("Unknown driver type: %d", fexExtended->Driver.Type);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::UNKNOWN_DRIVER_TYPE;
|
||||
}
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ namespace Driver
|
||||
}
|
||||
|
||||
fixme("Generic driver: %s", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -211,7 +211,7 @@ namespace Driver
|
||||
}
|
||||
|
||||
fixme("Display driver: %s", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -266,8 +266,8 @@ namespace Driver
|
||||
if (CallbackRet == DriverReturnCode::NOT_IMPLEMENTED)
|
||||
{
|
||||
error("Driver %s is not implemented", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete InterruptHook;
|
||||
delete mem, mem = nullptr;
|
||||
delete InterruptHook, InterruptHook = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
else if (CallbackRet == DriverReturnCode::OK)
|
||||
@ -275,8 +275,8 @@ namespace Driver
|
||||
else
|
||||
{
|
||||
error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet);
|
||||
delete mem;
|
||||
delete InterruptHook;
|
||||
delete mem, mem = nullptr;
|
||||
delete InterruptHook, InterruptHook = nullptr;
|
||||
return DriverCode::DRIVER_RETURNED_ERROR;
|
||||
}
|
||||
|
||||
@ -340,7 +340,7 @@ namespace Driver
|
||||
if (CallbackRet == DriverReturnCode::NOT_IMPLEMENTED)
|
||||
{
|
||||
error("Driver %s is not implemented", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
else if (CallbackRet == DriverReturnCode::OK)
|
||||
@ -348,7 +348,7 @@ namespace Driver
|
||||
else
|
||||
{
|
||||
error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::DRIVER_RETURNED_ERROR;
|
||||
}
|
||||
|
||||
@ -402,7 +402,7 @@ namespace Driver
|
||||
}
|
||||
|
||||
fixme("Filesystem driver: %s", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -446,7 +446,7 @@ namespace Driver
|
||||
}
|
||||
|
||||
fixme("Input driver: %s", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
@ -501,7 +501,7 @@ namespace Driver
|
||||
if (CallbackRet == DriverReturnCode::NOT_IMPLEMENTED)
|
||||
{
|
||||
error("Driver %s is not implemented", fexExtended->Driver.Name);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::NOT_IMPLEMENTED;
|
||||
}
|
||||
else if (CallbackRet == DriverReturnCode::OK)
|
||||
@ -509,7 +509,7 @@ namespace Driver
|
||||
else
|
||||
{
|
||||
error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::DRIVER_RETURNED_ERROR;
|
||||
}
|
||||
|
||||
@ -562,7 +562,7 @@ namespace Driver
|
||||
|
||||
if (CallDriverEntryPoint(fex, KAPI) != DriverCode::OK)
|
||||
{
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::DRIVER_RETURNED_ERROR;
|
||||
}
|
||||
debug("Starting driver %s", fexExtended->Driver.Name);
|
||||
@ -588,7 +588,7 @@ namespace Driver
|
||||
default:
|
||||
{
|
||||
warn("Unknown driver type: %d", fexExtended->Driver.Type);
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
return DriverCode::UNKNOWN_DRIVER_TYPE;
|
||||
}
|
||||
}
|
||||
|
@ -74,8 +74,9 @@ namespace Video
|
||||
if (this->Buffers[Index] == nullptr)
|
||||
return;
|
||||
KernelAllocator.FreePages(this->Buffers[Index]->Buffer, TO_PAGES(this->Buffers[Index]->Size));
|
||||
this->Buffers[Index]->Buffer = nullptr;
|
||||
this->Buffers[Index]->Checksum = 0; // Making sure that the buffer is not used anymore
|
||||
delete this->Buffers[Index];
|
||||
delete this->Buffers[Index], this->Buffers[Index] = nullptr;
|
||||
}
|
||||
|
||||
void Display::SetBufferCursor(int Index, uint32_t X, uint32_t Y)
|
||||
|
@ -39,7 +39,7 @@ namespace Execute
|
||||
uintptr_t *TmpBuffer = new uintptr_t[0x1000];
|
||||
*(int *)TmpBuffer = 2545;
|
||||
InterProcessCommunication::IPCErrorCode ret = Process->IPC->Write(Handle->ID, TmpBuffer, 0x1000);
|
||||
delete[] TmpBuffer;
|
||||
delete[] TmpBuffer, TmpBuffer = nullptr;
|
||||
debug("Write returned %d", ret);
|
||||
if (ret == InterProcessCommunication::IPCErrorCode::IPCNotListening)
|
||||
{
|
||||
@ -57,7 +57,7 @@ namespace Execute
|
||||
void ELFInterpreterThreadWrapper()
|
||||
{
|
||||
ELFInterpreterIPCThread(InterpreterTargetProcess, (char *)InterpreterTargetPath->c_str(), InterpreterMemoryImage, InterpreterNeededLibraries);
|
||||
delete InterpreterTargetPath;
|
||||
delete InterpreterTargetPath, InterpreterTargetPath = nullptr;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -206,7 +206,7 @@ namespace Execute
|
||||
Thread->Memory->Add(p.Address, p.PageCount);
|
||||
bl.TmpMem->DetachAddress(p.Address);
|
||||
}
|
||||
delete bl.TmpMem;
|
||||
delete bl.TmpMem, bl.TmpMem = nullptr;
|
||||
|
||||
bl.sd.Process = Process;
|
||||
bl.sd.Thread = Thread;
|
||||
|
@ -62,7 +62,7 @@ namespace Execute
|
||||
SymbolValue = ELFGetSymbolValue(((Elf64_Ehdr *)BaseImage), Section->sh_link, ELF64_R_SYM(RelTable->r_info));
|
||||
if (SymbolValue == 0xdead)
|
||||
{
|
||||
delete ELFBase.TmpMem;
|
||||
delete ELFBase.TmpMem, ELFBase.TmpMem = nullptr;
|
||||
return {};
|
||||
}
|
||||
}
|
||||
@ -80,7 +80,7 @@ namespace Execute
|
||||
default:
|
||||
{
|
||||
error("Unsupported relocation type: %d", ELF64_R_TYPE(RelTable->r_info));
|
||||
delete ELFBase.TmpMem;
|
||||
delete ELFBase.TmpMem, ELFBase.TmpMem = nullptr;
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ namespace VirtualFileSystem
|
||||
FinalPath.Get()[Size - 1] = '\0';
|
||||
|
||||
// Deallocate the Path array
|
||||
delete[] Path;
|
||||
delete[] Path, Path = nullptr;
|
||||
|
||||
vfsdbg("GetPathFromNode()->\"%s\"", FinalPath.Get());
|
||||
return FinalPath;
|
||||
@ -246,7 +246,7 @@ namespace VirtualFileSystem
|
||||
{
|
||||
if (strcmp(Parent->Children[i]->Name, Name) == 0)
|
||||
{
|
||||
delete Parent->Children[i];
|
||||
delete Parent->Children[i], Parent->Children[i] = nullptr;
|
||||
Parent->Children.remove(i);
|
||||
vfsdbg("RemoveChild()->OK");
|
||||
return FileStatus::OK;
|
||||
|
@ -636,11 +636,11 @@ namespace GraphicalUserInterface
|
||||
|
||||
GUI::~GUI()
|
||||
{
|
||||
delete this->mem;
|
||||
delete this->BackBuffer;
|
||||
delete this->DesktopBuffer;
|
||||
delete this->OverlayBuffer;
|
||||
delete this->CursorBuffer;
|
||||
delete this->mem, this->mem = nullptr;
|
||||
delete this->BackBuffer, this->BackBuffer = nullptr;
|
||||
delete this->DesktopBuffer, this->DesktopBuffer = nullptr;
|
||||
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);
|
||||
|
@ -57,7 +57,8 @@ namespace GraphicalUserInterface
|
||||
LastHeight = ((Window *)this->ParentWindow)->GetPosition().Height;
|
||||
|
||||
this->mem->FreePages(this->Buffer->Data, TO_PAGES(this->Buffer->Size));
|
||||
delete this->Buffer;
|
||||
this->Buffer->Data = nullptr;
|
||||
delete this->Buffer, this->Buffer = nullptr;
|
||||
|
||||
this->Buffer = new ScreenBitmap;
|
||||
this->Buffer->Width = LastWidth;
|
||||
|
@ -117,8 +117,8 @@ namespace GraphicalUserInterface
|
||||
|
||||
WidgetCollection::~WidgetCollection()
|
||||
{
|
||||
delete this->mem;
|
||||
delete this->Buffer;
|
||||
delete this->CurrentFont;
|
||||
delete this->mem, this->mem = nullptr;
|
||||
delete this->Buffer, this->Buffer = nullptr;
|
||||
delete this->CurrentFont, this->CurrentFont = nullptr;
|
||||
}
|
||||
}
|
||||
|
@ -60,6 +60,6 @@ namespace GraphicalUserInterface
|
||||
|
||||
Window::~Window()
|
||||
{
|
||||
delete this->mem;
|
||||
delete this->mem, this->mem = nullptr;
|
||||
}
|
||||
}
|
||||
|
@ -15,7 +15,8 @@ namespace GraphicalUserInterface
|
||||
{
|
||||
// TODO: Optimize this
|
||||
this->mem->FreePages(this->Buffer->Data, TO_PAGES(this->Buffer->Size));
|
||||
delete this->Buffer;
|
||||
this->Buffer->Data = nullptr;
|
||||
delete this->Buffer, this->Buffer = nullptr;
|
||||
|
||||
this->Buffer = new ScreenBitmap;
|
||||
this->Buffer->Width = e->Resize.Width;
|
||||
|
@ -27,7 +27,7 @@ namespace NetworkARP
|
||||
{
|
||||
DiscoveredAddress *tmp = DiscoveredAddresses[i];
|
||||
netdbg("Removed %s from discovered addresses", IP.v4.ToStringLittleEndian());
|
||||
delete tmp;
|
||||
delete tmp, tmp = nullptr;
|
||||
DiscoveredAddresses.remove(i);
|
||||
}
|
||||
}
|
||||
@ -125,7 +125,7 @@ namespace NetworkARP
|
||||
InternetProtocol().v4.FromHex(Header->TargetIP).ToStringLittleEndian());
|
||||
/* Send the request to the broadcast MAC address. */
|
||||
Ethernet->Send({.Address = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}, NetworkEthernet::FrameType::TYPE_ARP, (uint8_t *)Header, sizeof(ARPHeader));
|
||||
delete Header;
|
||||
delete Header, Header = nullptr;
|
||||
}
|
||||
|
||||
int RequestTimeout = 20;
|
||||
@ -160,7 +160,7 @@ namespace NetworkARP
|
||||
Header->TargetMAC = b48(ResolvedMAC);
|
||||
Header->TargetIP = b32(IP.v4.ToHex());
|
||||
Ethernet->Send(MediaAccessControl().FromHex(ResolvedMAC), NetworkEthernet::FrameType::TYPE_ARP, (uint8_t *)Header, sizeof(ARPHeader));
|
||||
delete Header;
|
||||
delete Header, Header = nullptr;
|
||||
}
|
||||
|
||||
bool ARP::OnEthernetPacketReceived(uint8_t *Data, uint64_t Length)
|
||||
|
@ -46,7 +46,7 @@ namespace NetworkInterfaceManager
|
||||
RegisteredEvents.remove(i);
|
||||
|
||||
// Delete all interfaces and their callbacks and free the memory
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
}
|
||||
|
||||
void NetworkInterface::FetchNetworkCards(unsigned long DriverUID)
|
||||
|
@ -304,6 +304,6 @@ namespace Recovery
|
||||
KernelRecovery::~KernelRecovery()
|
||||
{
|
||||
debug("Destructor called");
|
||||
delete gui;
|
||||
delete gui, gui = nullptr;
|
||||
}
|
||||
}
|
||||
|
@ -236,7 +236,7 @@ namespace InterProcessCommunication
|
||||
|
||||
IPC::~IPC()
|
||||
{
|
||||
delete mem;
|
||||
delete mem, mem = nullptr;
|
||||
vfs->Delete(IPCNode, true);
|
||||
}
|
||||
}
|
||||
|
@ -88,10 +88,10 @@ namespace Tasking
|
||||
trace("Thread \"%s\"(%d) removed from process \"%s\"(%d)",
|
||||
Thread->Name, Thread->ID, Thread->Parent->Name, Thread->Parent->ID);
|
||||
// Free memory
|
||||
delete Thread->Stack;
|
||||
delete Thread->Memory;
|
||||
delete Thread->Stack, Thread->Stack = nullptr;
|
||||
delete Thread->Memory, Thread->Memory = nullptr;
|
||||
SecurityManager.DestroyToken(Thread->Security.UniqueToken);
|
||||
delete Thread->Parent->Threads[i];
|
||||
delete Thread->Parent->Threads[i], Thread->Parent->Threads[i] = nullptr;
|
||||
// Remove from the list
|
||||
Thread->Parent->Threads.remove(i);
|
||||
break;
|
||||
@ -117,8 +117,8 @@ namespace Tasking
|
||||
{
|
||||
trace("Process \"%s\"(%d) removed from the list", Process->Name, Process->ID);
|
||||
// Free memory
|
||||
delete ListProcess[i]->IPC;
|
||||
delete ListProcess[i]->ELFSymbolTable;
|
||||
delete ListProcess[i]->IPC, ListProcess[i]->IPC = nullptr;
|
||||
delete ListProcess[i]->ELFSymbolTable, ListProcess[i]->ELFSymbolTable = nullptr;
|
||||
SecurityManager.DestroyToken(ListProcess[i]->Security.UniqueToken);
|
||||
if (ListProcess[i]->Security.TrustLevel == TaskTrustLevel::User)
|
||||
KernelAllocator.FreePages((void *)ListProcess[i]->PageTable, TO_PAGES(PAGE_SIZE));
|
||||
@ -138,7 +138,7 @@ namespace Tasking
|
||||
vfs->Delete(ListProcess[i]->ProcessDirectory, true);
|
||||
|
||||
// Free memory
|
||||
delete ListProcess[i];
|
||||
delete ListProcess[i], ListProcess[i] = nullptr;
|
||||
// Remove from the list
|
||||
ListProcess.remove(i);
|
||||
break;
|
||||
@ -304,9 +304,9 @@ namespace Tasking
|
||||
}
|
||||
}
|
||||
|
||||
delete Process->IPC;
|
||||
delete Process->ELFSymbolTable;
|
||||
delete Process;
|
||||
delete Process->IPC, Process->IPC = nullptr;
|
||||
delete Process->ELFSymbolTable, Process->ELFSymbolTable = nullptr;
|
||||
delete Process, Process = nullptr;
|
||||
ListProcess.remove(i);
|
||||
NextPID--;
|
||||
break;
|
||||
@ -325,10 +325,10 @@ namespace Tasking
|
||||
}
|
||||
}
|
||||
|
||||
delete Thread->Stack;
|
||||
delete Thread->Memory;
|
||||
delete Thread->Stack, Thread->Stack = nullptr;
|
||||
delete Thread->Memory, Thread->Memory = nullptr;
|
||||
SecurityManager.DestroyToken(Thread->Security.UniqueToken);
|
||||
delete Thread;
|
||||
delete Thread, Thread = nullptr;
|
||||
NextTID--;
|
||||
}
|
||||
|
||||
|
@ -39,9 +39,9 @@ public:
|
||||
{
|
||||
for (int i = 0; i < HashMapCapacity; i++)
|
||||
if (Nodes[i] != nullptr)
|
||||
delete Nodes[i];
|
||||
delete[] Nodes;
|
||||
delete DummyNode;
|
||||
delete Nodes[i], Nodes[i] = nullptr;
|
||||
delete[] Nodes, Nodes = nullptr;
|
||||
delete DummyNode, DummyNode = nullptr;
|
||||
}
|
||||
|
||||
int HashCode(K Key) { return Key % HashMapCapacity; }
|
||||
|
@ -41,7 +41,7 @@ public:
|
||||
~smart_ptr()
|
||||
{
|
||||
spdbg("Smart pointer deleted (%#lx)", m_RealPointer);
|
||||
delete (m_RealPointer);
|
||||
delete m_RealPointer, m_RealPointer = nullptr;
|
||||
}
|
||||
|
||||
T &operator*()
|
||||
@ -151,8 +151,8 @@ public:
|
||||
if (m_ReferenceCounter->Get() == 0)
|
||||
{
|
||||
spdbg("[%#lx] Shared pointer deleted (ptr=%#lx, ref=%#lx)", this, m_RealPointer, m_ReferenceCounter);
|
||||
delete m_ReferenceCounter;
|
||||
delete m_RealPointer;
|
||||
delete m_ReferenceCounter, m_ReferenceCounter = nullptr;
|
||||
delete m_RealPointer, m_RealPointer = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@ -188,8 +188,8 @@ public:
|
||||
(*m_ReferenceCounter)--;
|
||||
if (m_ReferenceCounter->Get() == 0)
|
||||
{
|
||||
delete m_ReferenceCounter;
|
||||
delete m_RealPointer;
|
||||
delete m_ReferenceCounter;
|
||||
}
|
||||
m_RealPointer = Pointer;
|
||||
m_ReferenceCounter = new Counter();
|
||||
@ -202,15 +202,13 @@ public:
|
||||
spdbg("[%#lx] Shared pointer reset (ptr=%#lx, ref=%#lx)", this, m_RealPointer, m_ReferenceCounter);
|
||||
if (m_ReferenceCounter->Get() == 1)
|
||||
{
|
||||
delete m_RealPointer;
|
||||
delete m_ReferenceCounter;
|
||||
delete m_RealPointer, m_RealPointer = nullptr;
|
||||
delete m_ReferenceCounter, m_ReferenceCounter = nullptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
(*m_ReferenceCounter)--;
|
||||
}
|
||||
m_RealPointer = nullptr;
|
||||
m_ReferenceCounter = nullptr;
|
||||
}
|
||||
|
||||
void swap(shared_ptr<T> &Other)
|
||||
|
@ -40,7 +40,7 @@ public:
|
||||
~String()
|
||||
{
|
||||
strdbg("String deleted: \"%s\" (data: %#lx, length: %d, capacity: %d)", this->m_Data, this->m_Data, this->m_Length, this->m_Capacity);
|
||||
delete[] this->m_Data;
|
||||
delete[] this->m_Data, this->m_Data = nullptr;
|
||||
}
|
||||
|
||||
int length() const
|
||||
|
@ -71,8 +71,7 @@ public:
|
||||
VectorCapacity = 0;
|
||||
if (VectorBuffer != nullptr)
|
||||
{
|
||||
delete[] VectorBuffer;
|
||||
VectorBuffer = nullptr;
|
||||
delete[] VectorBuffer, VectorBuffer = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@ -230,8 +229,7 @@ public:
|
||||
VectorSize = 0;
|
||||
if (VectorBuffer != nullptr)
|
||||
{
|
||||
delete[] VectorBuffer;
|
||||
VectorBuffer = nullptr;
|
||||
delete[] VectorBuffer, VectorBuffer = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user