Why did I put the FreePool parameter as const. That's stupid !

You must never free a const pointer, by definition.
This commit is contained in:
jief 2023-11-11 15:57:02 +01:00
parent 22d277d1e4
commit 187400d0ae
4 changed files with 15 additions and 8 deletions

View File

@ -478,10 +478,13 @@ ReallocateReservedPool (
@param Buffer Pointer to the buffer to free. @param Buffer Pointer to the buffer to free.
**/ **/
/*
* Jief : One day, I put JCONST. This is wrong !!! You must never free a ptr that's const.
*/
VOID VOID
EFIAPI EFIAPI
FreePool( FreePool(
IN JCONST VOID *Buffer IN VOID *Buffer
); );
#endif #endif

View File

@ -681,7 +681,8 @@ MacOsVersion GetOSVersion(int LoaderType, const EFI_GUID& APFSTargetUUID, const
// Check for ia.log - InstallESD/createinstallmedia/startosinstall // Check for ia.log - InstallESD/createinstallmedia/startosinstall
// Implemented by Sherlocks // Implemented by Sherlocks
if (OSVersion.isEmpty()) { if (OSVersion.isEmpty()) {
CONST CHAR8 *s, *fileBuffer; CONST CHAR8 *s;
UINT8* fileBuffer;
// CHAR8 *Res5 = (__typeof__(Res5))AllocateZeroPool(5); // CHAR8 *Res5 = (__typeof__(Res5))AllocateZeroPool(5);
// CHAR8 *Res6 = (__typeof__(Res6))AllocateZeroPool(6); // CHAR8 *Res6 = (__typeof__(Res6))AllocateZeroPool(6);
// CHAR8 *Res7 = (__typeof__(Res7))AllocateZeroPool(7); // CHAR8 *Res7 = (__typeof__(Res7))AllocateZeroPool(7);
@ -696,10 +697,10 @@ MacOsVersion GetOSVersion(int LoaderType, const EFI_GUID& APFSTargetUUID, const
} }
} }
if (FileExists (Volume->RootDir, InstallerLog)) { if (FileExists (Volume->RootDir, InstallerLog)) {
Status = egLoadFile(Volume->RootDir, InstallerLog.wc_str(), (UINT8 **)&fileBuffer, &fileLen); Status = egLoadFile(Volume->RootDir, InstallerLog.wc_str(), &fileBuffer, &fileLen);
if (!EFI_ERROR(Status)) { if (!EFI_ERROR(Status)) {
XString8 targetString; XString8 targetString;
targetString.strncpy(fileBuffer, fileLen); targetString.strncpy((CHAR8*)fileBuffer, fileLen);
// s = SearchString(targetString, fileLen, "Running OS Build: Mac OS X ", 27); // s = SearchString(targetString, fileLen, "Running OS Build: Mac OS X ", 27);
s = AsciiStrStr(targetString.c_str(), "Running OS Build: Mac OS X "); s = AsciiStrStr(targetString.c_str(), "Running OS Build: Mac OS X ");
if (s[31] == ' ') { if (s[31] == ' ') {

View File

@ -125,8 +125,8 @@ EFI_STATUS Status = EFI_NOT_FOUND;
} }
TestTheme.setEmpty(); TestTheme.setEmpty();
} }
FreePool(ChosenTheme); //FreePool(ChosenTheme); // ChosenTheme is an argument passed here, so the callee is "own" that memory.
ChosenTheme = NULL; //ChosenTheme = NULL; // Why is this bad pratice : it's assuming that ChosenTheme was dynamically allocated and freeable. What is this the content of an XString ?
} }
// Try to get theme from settings // Try to get theme from settings
if (ThemeDict == NULL) { if (ThemeDict == NULL) {
@ -204,7 +204,8 @@ finish:
} }
} }
if (ChosenTheme != NULL) { if (ChosenTheme != NULL) {
FreePool(ChosenTheme); //FreePool(ChosenTheme); // ChosenTheme is an argument passed here, so the callee is "own" that memory.
// Why is this bad pratice : it's assuming that ChosenTheme was dynamically allocated and freeable. What is this the content of an XString ?
} }
if (!ThemeX->TypeSVG) { if (!ThemeX->TypeSVG) {
ThemeX->PrepareFont(); ThemeX->PrepareFont();

View File

@ -3030,7 +3030,9 @@ RefitMain (IN EFI_HANDLE ImageHandle,
if (!GlobalConfig.isFastBoot()) { if (!GlobalConfig.isFastBoot()) {
if (gThemeNeedInit) { if (gThemeNeedInit) {
UINTN Size = 0; UINTN Size = 0;
InitTheme((CHAR8*)GetNvramVariable(L"Clover.Theme", gEfiAppleBootGuid, NULL, &Size)); CHAR8* ChoosenTheme = (CHAR8*)GetNvramVariable(L"Clover.Theme", gEfiAppleBootGuid, NULL, &Size);
InitTheme(ChoosenTheme);
FreePool(ChoosenTheme);
gThemeNeedInit = false; gThemeNeedInit = false;
} else if (GlobalConfig.gThemeChanged) { } else if (GlobalConfig.gThemeChanged) {
DBG("change theme\n"); DBG("change theme\n");