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