take into account signness of variables

Signed-off-by: Slice <sergey.slice@gmail.com>
This commit is contained in:
Slice 2023-11-26 17:10:53 +03:00
parent 95fac19588
commit 20e924f5a1
10 changed files with 59 additions and 42 deletions

@ -1 +1 @@
Subproject commit a38c3a3705021e3808d62d135e0a4089d74986b5
Subproject commit c24f740b07c97efec0b772d914a9bdab448f3039

View File

@ -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");

View File

@ -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,
@ -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 = " ";
@ -1085,7 +1085,7 @@ 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);
@ -1093,12 +1093,12 @@ if ( Entry->APFSTargetUUID.Data1 == 0x99999999 ) {
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:
@ -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:

View File

@ -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
@ -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;

View File

@ -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;
}
}
@ -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;
@ -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) {

View File

@ -423,7 +423,7 @@ public:
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();

View File

@ -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;
@ -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"); }
@ -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; };
@ -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; };
@ -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; };
@ -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; };
@ -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; };

View File

@ -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");
@ -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;
}

View File

@ -211,8 +211,9 @@ finish:
ThemeX->PrepareFont();
}
//ThemeX->ClearScreen();
#ifdef JIEF_DEBUG
displayFreeMemory("InitTheme end"_XS8);
#endif
return Status;
}

View File

@ -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();
@ -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) ) {
@ -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
@ -2901,6 +2904,11 @@ 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));
@ -2908,8 +2916,8 @@ RefitMainMain (IN EFI_HANDLE ImageHandle,
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;
@ -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
@ -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
@ -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()) {