Skip to content

Commit

Permalink
take into account signness of variables
Browse files Browse the repository at this point in the history
Signed-off-by: Slice <sergey.slice@gmail.com>
  • Loading branch information
SergeySlice committed Nov 26, 2023
1 parent 95fac19 commit 20e924f
Show file tree
Hide file tree
Showing 10 changed files with 59 additions and 42 deletions.
2 changes: 1 addition & 1 deletion OpenCorePkg
5 changes: 3 additions & 2 deletions rEFIt_UEFI/entry_scan/legacy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,13 @@

//the function is not in the class and deals always with MainMenu
//I made args as pointers to have an ability to call with NULL
XBool AddLegacyEntry(IN const XStringW& FullTitle, IN const XStringW& _LoaderTitle, IN REFIT_VOLUME *Volume, IN const XIcon* Image, IN const XIcon* DriveImage, IN char32_t Hotkey, IN XBool CustomEntry)
XBool AddLegacyEntry(IN const XStringW& FullTitle, IN const XStringW& _LoaderTitle, IN REFIT_VOLUME *Volume,
IN const XIcon* Image, IN const XIcon* DriveImage, IN wchar_t Hotkey, IN XBool CustomEntry)
{
LEGACY_ENTRY *Entry, *SubEntry;
REFIT_MENU_SCREEN *SubScreen;
XStringW VolDesc;
CHAR16 ShortcutLetter = 0;
wchar_t ShortcutLetter = 0;
// INTN i;

DBG(" AddLegacyEntry:\n");
Expand Down
14 changes: 7 additions & 7 deletions rEFIt_UEFI/entry_scan/loader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -909,7 +909,7 @@ STATIC LOADER_ENTRY *CreateLoaderEntry(IN CONST XStringW& LoaderPath,
IN XIcon *DriveImage,
IN UINT8 OSType,
IN UINT8 Flags,
IN char32_t Hotkey,
IN wchar_t Hotkey,
EFI_GRAPHICS_OUTPUT_BLT_PIXEL BootBgColor,
IN UINT8 CustomBoot,
IN const XImage& CustomLogo,
Expand All @@ -919,7 +919,7 @@ STATIC LOADER_ENTRY *CreateLoaderEntry(IN CONST XStringW& LoaderPath,
EFI_DEVICE_PATH *LoaderDevicePath;
XStringW LoaderDevicePathString;
XStringW FilePathAsString;
CHAR16 ShortcutLetter;
wchar_t ShortcutLetter;
LOADER_ENTRY *Entry;
CONST CHAR8 *indent = " ";

Expand Down Expand Up @@ -1085,20 +1085,20 @@ if ( Entry->APFSTargetUUID.Data1 == 0x99999999 ) {
Entry->Flags = OSFLAG_SET(Entry->Flags, OSFLAG_HIBERNATED);
DBG("%s =>set entry as hibernated\n", indent);
}
ShortcutLetter = 'M';
ShortcutLetter = L'M';
if ( Entry->DisplayedVolName.isEmpty() ) {
// else no sense to override it with dubious name
GetOSXVolumeName(Entry);
}
break;
case OSTYPE_WIN:
OSIconName = L"win"_XSW;
ShortcutLetter = 'W';
ShortcutLetter = L'W';
break;
case OSTYPE_WINEFI:
OSIconName = L"vista,win"_XSW;
//ShortcutLetter = 'V';
ShortcutLetter = 'W';
ShortcutLetter = L'W';
break;
case OSTYPE_LIN:
case OSTYPE_LINEFI:
Expand All @@ -1109,12 +1109,12 @@ if ( Entry->APFSTargetUUID.Data1 == 0x99999999 ) {
DBG("%slinux image not found\n", indent);
OSIconName = LinuxIconNameFromPath(LoaderPath, Volume->RootDir); //something named "issue"
}
ShortcutLetter = 'L';
ShortcutLetter = L'L';
break;
//case OSTYPE_OTHER:
case OSTYPE_EFI:
OSIconName = L"clover"_XSW;
ShortcutLetter = 'E';
ShortcutLetter = L'E';
Entry->LoaderType = OSTYPE_OTHER;
break;
default:
Expand Down
4 changes: 2 additions & 2 deletions rEFIt_UEFI/entry_scan/tool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@

STATIC XBool AddToolEntry(IN CONST XStringW& LoaderPath, IN CONST CHAR16 *FullTitle, IN CONST CHAR16 *LoaderTitle,
IN REFIT_VOLUME *Volume, const XIcon& Image,
IN char32_t ShortcutLetter, IN CONST XString8Array& Options)
IN wchar_t ShortcutLetter, IN CONST XString8Array& Options)
{
REFIT_MENU_ENTRY_LOADER_TOOL *Entry;
// Check the loader exists
Expand Down Expand Up @@ -128,7 +128,7 @@ STATIC void AddCloverEntry(IN CONST XStringW& LoaderPath, IN CONST CHAR16 *Loade
Entry->Title.takeValueFrom(LoaderTitle);
// Entry->Tag = TAG_CLOVER;
Entry->Row = 1;
Entry->ShortcutLetter = 'C';
Entry->ShortcutLetter = L'C';
Entry->Image = ThemeX->GetIcon(BUILTIN_ICON_FUNC_CLOVER);
Entry->Volume = Volume;
Entry->LoaderPath = LoaderPath;
Expand Down
9 changes: 5 additions & 4 deletions rEFIt_UEFI/gui/REFIT_MENU_SCREEN.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -433,12 +433,13 @@ void REFIT_MENU_SCREEN::FreeMenu()

INTN REFIT_MENU_SCREEN::FindMenuShortcutEntry(IN wchar_t Shortcut)
{
if (Shortcut >= 'a' && Shortcut <= 'z')
Shortcut -= ('a' - 'A');
if (Shortcut >= L'a' && Shortcut <= L'z')
Shortcut -= (L'a' - L'A');
if (Shortcut) {
for (UINTN i = 0; i < Entries.size(); i++) {
if (Entries[i].ShortcutDigit == Shortcut ||
Entries[i].ShortcutLetter == Shortcut) {
DBG("found entry %lld because shorcut=%x and ShortcutLetter=%x\n", i, Shortcut, Entries[i].ShortcutLetter);
return i;
}
}
Expand Down Expand Up @@ -694,7 +695,7 @@ UINTN REFIT_MENU_SCREEN::RunGenericMenu(IN OUT INTN *DefaultEntryIndex, OUT REFI
EFI_STATUS Status;
EFI_INPUT_KEY key;
// UINTN Index;
CHAR16 ShortcutEntry;
INTN ShortcutEntry;
XBool HaveTimeout = false;
INTN TimeoutCountdown = 0;
UINTN MenuExit;
Expand Down Expand Up @@ -881,7 +882,7 @@ UINTN REFIT_MENU_SCREEN::RunGenericMenu(IN OUT INTN *DefaultEntryIndex, OUT REFI
HidePointer(); //ycr.ru
HaveTimeout = false;
}

DBG("key: scancode=0x%x unicode=0x%x\n", key.ScanCode, key.UnicodeChar);
mAction = ActionNone; //do action once
// react to key press
switch (key.ScanCode) {
Expand Down
2 changes: 1 addition & 1 deletion rEFIt_UEFI/gui/REFIT_MENU_SCREEN.h
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ class REFIT_MENU_SCREEN
void AddMenuCheck(CONST CHAR8 *Text, UINTN Bit, INTN ItemNum);
void AddMenuItemInput(INTN Inx, CONST CHAR8 *Title, XBool Cursor);
void FreeMenu();
INTN FindMenuShortcutEntry(IN wchar_t Shortcut);
INTN FindMenuShortcutEntry(IN CHAR16 Shortcut);
UINTN RunGenericMenu(IN OUT INTN *DefaultEntryIndex, OUT REFIT_ABSTRACT_MENU_ENTRY **ChosenEntry);
UINTN RunMenu(OUT REFIT_ABSTRACT_MENU_ENTRY **ChosenEntry);
UINTN InputDialog();
Expand Down
16 changes: 8 additions & 8 deletions rEFIt_UEFI/gui/menu_items/menu_items.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ class REFIT_ABSTRACT_MENU_ENTRY
XStringW Title = XStringW();
XBool Hidden = false;
UINTN Row = 0;
CHAR16 ShortcutDigit = 0;
CHAR16 ShortcutLetter = 0;
wchar_t ShortcutDigit = 0;
wchar_t ShortcutLetter = 0;
XIcon Image = 0;
EG_RECT Place = EG_RECT();
ACTION AtClick = ActionNone;
Expand Down Expand Up @@ -145,7 +145,7 @@ class REFIT_ABSTRACT_MENU_ENTRY
REFIT_ABSTRACT_MENU_ENTRY() {};
REFIT_ABSTRACT_MENU_ENTRY(const XStringW& Title_) : Title(Title_) {};
REFIT_ABSTRACT_MENU_ENTRY(const XStringW& Title_, ACTION AtClick_) : Title(Title_), AtClick(AtClick_) {};
REFIT_ABSTRACT_MENU_ENTRY(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_) : Title(Title_), Row(Row_), ShortcutDigit(ShortcutDigit_), ShortcutLetter(ShortcutLetter_), AtClick(AtClick_) {};
REFIT_ABSTRACT_MENU_ENTRY(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_) : Title(Title_), Row(Row_), ShortcutDigit(ShortcutDigit_), ShortcutLetter(ShortcutLetter_), AtClick(AtClick_) {};

REFIT_ABSTRACT_MENU_ENTRY(const REFIT_ABSTRACT_MENU_ENTRY&) { panic("not yet defined"); }
REFIT_ABSTRACT_MENU_ENTRY& operator=(const REFIT_ABSTRACT_MENU_ENTRY&) { panic("not yet defined"); }
Expand Down Expand Up @@ -177,7 +177,7 @@ class REFIT_ABSTRACT_MENU_ENTRY
{
public:
REFIT_MENU_ITEM_RETURN() : REFIT_ABSTRACT_MENU_ENTRY() {};
REFIT_MENU_ITEM_RETURN(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_)
REFIT_MENU_ITEM_RETURN(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_)
: REFIT_ABSTRACT_MENU_ENTRY(Title_, Row_, ShortcutDigit_, ShortcutLetter_, AtClick_)
{};
virtual REFIT_MENU_ITEM_RETURN* getREFIT_MENU_ITEM_RETURN() { return this; };
Expand All @@ -187,7 +187,7 @@ class REFIT_ABSTRACT_MENU_ENTRY
{
public:
REFIT_MENU_ITEM_SHUTDOWN() : REFIT_ABSTRACT_MENU_ENTRY() {};
REFIT_MENU_ITEM_SHUTDOWN(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_)
REFIT_MENU_ITEM_SHUTDOWN(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_)
: REFIT_ABSTRACT_MENU_ENTRY(Title_, Row_, ShortcutDigit_, ShortcutLetter_, AtClick_)
{};
virtual REFIT_MENU_ITEM_SHUTDOWN* getREFIT_MENU_ITEM_SHUTDOWN() { return this; };
Expand All @@ -196,7 +196,7 @@ class REFIT_ABSTRACT_MENU_ENTRY
class REFIT_MENU_ITEM_RESET : public REFIT_ABSTRACT_MENU_ENTRY {
public:
REFIT_MENU_ITEM_RESET() : REFIT_ABSTRACT_MENU_ENTRY() {};
REFIT_MENU_ITEM_RESET(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_)
REFIT_MENU_ITEM_RESET(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_)
: REFIT_ABSTRACT_MENU_ENTRY(Title_, Row_, ShortcutDigit_, ShortcutLetter_, AtClick_)
{};
virtual REFIT_MENU_ITEM_RESET* getREFIT_MENU_ITEM_RESET() { return this; };
Expand All @@ -206,7 +206,7 @@ class REFIT_ABSTRACT_MENU_ENTRY
{
public:
REFIT_MENU_ITEM_ABOUT() : REFIT_ABSTRACT_MENU_ENTRY() {};
REFIT_MENU_ITEM_ABOUT(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_)
REFIT_MENU_ITEM_ABOUT(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_)
: REFIT_ABSTRACT_MENU_ENTRY(Title_, Row_, ShortcutDigit_, ShortcutLetter_, AtClick_)
{};
virtual REFIT_MENU_ITEM_ABOUT* getREFIT_MENU_ITEM_ABOUT() { return this; };
Expand All @@ -215,7 +215,7 @@ class REFIT_ABSTRACT_MENU_ENTRY
class REFIT_MENU_ITEM_OPTIONS : public REFIT_ABSTRACT_MENU_ENTRY {
public:
REFIT_MENU_ITEM_OPTIONS() : REFIT_ABSTRACT_MENU_ENTRY() {};
REFIT_MENU_ITEM_OPTIONS(const XStringW& Title_, UINTN Row_, CHAR16 ShortcutDigit_, CHAR16 ShortcutLetter_, ACTION AtClick_)
REFIT_MENU_ITEM_OPTIONS(const XStringW& Title_, UINTN Row_, wchar_t ShortcutDigit_, wchar_t ShortcutLetter_, ACTION AtClick_)
: REFIT_ABSTRACT_MENU_ENTRY(Title_, Row_, ShortcutDigit_, ShortcutLetter_, AtClick_)
{};
virtual REFIT_MENU_ITEM_OPTIONS* getREFIT_MENU_ITEM_OPTIONS() { return this; };
Expand Down
8 changes: 4 additions & 4 deletions rEFIt_UEFI/libeg/VectorGraphics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,9 @@ EFI_STATUS XTheme::ParseSVGXTheme(UINT8* buffer, UINTN Size)
EFI_STATUS Status;

Icons.setEmpty();

#ifdef JIEF_DEBUG
displayFreeMemory("XTheme::ParseSVGXTheme begin"_XS8);

#endif
#if defined(JIEF_DEBUG) && defined(NANOSVG_MEMORY_ALLOCATION_TRACE)
if ( nsvg__nbDanglingPtr() > 0 ) {
DBG("There is already dangling ptr. nano svg memory leak test not done\n");
Expand Down Expand Up @@ -307,9 +307,9 @@ if ( nsvg__nbDanglingPtr() > 0 ) {
SVGParser->fontsDB = NULL; // To avoid nsvg__deleteParser to delete it;
nsvg__deleteParser(SVGParser); // comment out this line and the next to keep the parser memory, in case of doubt that font are dependent.
SVGParser = NULL;

#ifdef JIEF_DEBUG
displayFreeMemory("XTheme::ParseSVGXTheme end"_XS8);

#endif
return EFI_SUCCESS;
}

Expand Down
3 changes: 2 additions & 1 deletion rEFIt_UEFI/libeg/XTheme.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,9 @@ EFI_STATUS Status = EFI_NOT_FOUND;
ThemeX->PrepareFont();
}
//ThemeX->ClearScreen();

#ifdef JIEF_DEBUG
displayFreeMemory("InitTheme end"_XS8);
#endif
return Status;
}

Expand Down
38 changes: 26 additions & 12 deletions rEFIt_UEFI/refit/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -779,7 +779,9 @@ void LOADER_ENTRY::StartLoader()
DbgHeader("StartLoader");

DBG("Starting %ls\n", FileDevicePathToXStringW(DevicePath).wc_str());
#ifdef JIEF_DEBUG
displayFreeMemory("LOADER_ENTRY::StartLoader()"_XS8);
#endif
// while ( OcCountFreePages(NULL) > 300000 && AllocatePages(100) ) /*DBG("Free memory : %lld\n", OcCountFreePages(NULL))*/;
// displayFreeMemory();

Expand Down Expand Up @@ -1728,8 +1730,9 @@ void LOADER_ENTRY::StartLoader()

AllocSmallBlocks(); // shrink memory map;
PrintMemoryMap();
#ifdef JIEF_DEBUG
displayFreeMemory("Just before launching image"_XS8);

#endif
Status = gBS->StartImage (ImageHandle, 0, NULL); // point to OcStartImage from OC

if ( EFI_ERROR(Status) ) {
Expand Down Expand Up @@ -2809,9 +2812,9 @@ RefitMainMain (IN EFI_HANDLE ImageHandle,
MsgLog("Starting %s on %ls EFI\n", gRevisionStr, gST->FirmwareVendor);
MsgLog("Build id: %s\n", gBuildId.c_str());
if ( gBuildInfo ) DBG("Build with: [%s]\n", gBuildInfo);

#ifdef JIEF_DEBUG
displayFreeMemory(""_XS8);

#endif

//dumping SETTING structure
// if you change something in Platform.h, please uncomment and test that all offsets
Expand Down Expand Up @@ -2901,15 +2904,20 @@ RefitMainMain (IN EFI_HANDLE ImageHandle,
#if 0
//testing place
{
DBG(" size CHAR8=%ld\n", sizeof(CHAR8));
DBG(" size CHAR16=%ld\n", sizeof(CHAR16));
DBG(" size wchar_t=%ld\n", sizeof(wchar_t));
DBG(" size char32_t=%ld\n", sizeof(char32_t));
DBG(" size char16_t=%ld\n", sizeof(char16_t));
const CHAR16 aaa[] = L"12345 ";
const CHAR8 *bbb = "12345 ";
DBG(" string %ls, size=%lld, len=%lld sizeof=%ld iStrLen=%lld\n", aaa, StrSize(aaa), StrLen(aaa), sizeof(aaa), iStrLen(bbb, 10));
const CHAR8* ccc = "Выход ";
DBG(" string %s, size=%lld, len=%lld sizeof=%ld iStrLen=%lld\n", ccc, AsciiStrSize(ccc), AsciiStrLen(ccc), sizeof(ccc), iStrLen(ccc, 10));
XString8 ddd = "Выход "_XS8;
// size_t sizex = ddd.allocatedSize();
DBG(" xstring %s, asize=%ld, sizeinbyte=%ld sizeof=%ld lastcharat=%ld\n", ddd.c_str(), ddd.allocatedSize(), ddd.sizeInBytes(), sizeof(ddd),
ddd.indexOf(ddd.lastChar()));
DBG(" xstring %s, asize=%ld, sizeinbyte=%ld sizeof=%ld lastcharat=%ld\n", ddd.c_str(), ddd.allocatedSize(),
ddd.sizeInBytes(), sizeof(ddd), ddd.indexOf(ddd.lastChar()));
CHAR8 compatible[64];
UINT32 FakeLAN = 0x0030168c;
UINT32 FakeID = FakeLAN >> 16;
Expand All @@ -2926,12 +2934,16 @@ RefitMainMain (IN EFI_HANDLE ImageHandle,
sizeof(void*), sizeof(int), sizeof(long int), sizeof(long long), sizeof(EFI_ALLOCATE_TYPE));
/*
Results
41:381 0:000 string 12345 , size=16, len=7 sizeof=16 iStrLen=5
41:381 0:000 string Выход , size=13, len=12 sizeof=8 iStrLen=10
41:381 0:000 xstring Выход , asize=0, sizeinbyte=11 sizeof=16 lastcharat=5
41:381 0:000 FakeLAN = 0x30168c
41:381 0:000 Compatible=pci168c,30 strlen=10 sizeof=64 iStrLen=10

1:200 0:025 size CHAR8=1
1:226 0:025 size CHAR16=2
1:251 0:024 size wchar_t=2
1:275 0:024 size char16_t=2
1:381 0:000 string 12345 , size=16, len=7 sizeof=16 iStrLen=5
1:381 0:000 string Выход , size=13, len=12 sizeof=8 iStrLen=10
1:381 0:000 xstring Выход , asize=0, sizeinbyte=11 sizeof=16 lastcharat=5
1:381 0:000 FakeLAN = 0x30168c
1:381 0:000 Compatible=pci168c,30 strlen=10 sizeof=64 iStrLen=10
1:430 0:025 void*=8 int=4 long=8 longlong=8 enum=4
*/
}
#endif
Expand Down Expand Up @@ -3226,7 +3238,9 @@ DefaultIndex = MainMenu.Entries.length()-1; // this should be "Exit Clover"
GlobalConfig.gThemeChanged = false;
ThemeX->ClearScreen();
}
#ifdef JIEF_DEBUG
displayFreeMemory("Before RunMainMenu"_XS8);
#endif
MenuExit = MainMenu.RunMainMenu(DefaultIndex, &ChosenEntry);
}
// DBG("exit from MainMenu %llu\n", MenuExit); //MENU_EXIT_ENTER=(1) MENU_EXIT_DETAILS=3
Expand Down Expand Up @@ -3383,7 +3397,7 @@ log_technical_bug("not done yet");
#endif // ENABLE_SECURE_BOOT
// DBG("come to Clover entry with letter %c\n", ChosenEntry->ShortcutLetter);
REFIT_MENU_ENTRY_CLOVER* LoaderEntry = ChosenEntry->getREFIT_MENU_ENTRY_CLOVER();
if ((ChosenEntry->ShortcutLetter == 'C') || LoaderEntry != NULL ) { // Clover options
if ((ChosenEntry->ShortcutLetter == L'C') || LoaderEntry != NULL ) { // Clover options
// DBG("enter Clover entry\n");

if (LoaderEntry->LoadOptions.notEmpty()) {
Expand Down

0 comments on commit 20e924f

Please sign in to comment.