AddListElement((VOID ***) &(Screen->Entries), &(Screen->EntryCount), Entry);
}
-VOID FreeMenu(IN REFIT_MENU_SCREEN *Screen)
-{
- if (Screen->Entries)
- FreePool(Screen->Entries);
-}
static INTN FindMenuShortcutEntry(IN REFIT_MENU_SCREEN *Screen, IN CHAR16 *Shortcut)
{
// prepare strings for display
DisplayStrings = AllocatePool(sizeof(CHAR16 *) * Screen->EntryCount);
- for (i = 0; i <= State->MaxIndex; i++)
- SPrint(DisplayStrings[i], Screen->EntryCount, L" %-.*s ", MenuWidth, Screen->Entries[i]->Title);
-// DisplayStrings[i] = PoolPrint(L" %-.*s ", MenuWidth, Screen->Entries[i]->Title);
+ for (i = 0; i <= State->MaxIndex; i++) {
+ DisplayStrings[i] = AllocateZeroPool(256 * sizeof(CHAR16));
+ SPrint(DisplayStrings[i], 255, L" %-.*s ", MenuWidth, Screen->Entries[i]->Title);
// TODO: use more elaborate techniques for shortening too long strings (ellipses in the middle)
// TODO: account for double-width characters
+ } // for
// initial painting
BeginTextScreen(Screen->Title);
case MENU_FUNCTION_CLEANUP:
// release temporary memory
for (i = 0; i <= State->MaxIndex; i++)
- FreePool(DisplayStrings[i]);
- FreePool(DisplayStrings);
+ MyFreePool(DisplayStrings[i]);
+ MyFreePool(DisplayStrings);
break;
case MENU_FUNCTION_PAINT_ALL:
break;
case MENU_FUNCTION_CLEANUP:
- FreePool(itemPosX);
+ MyFreePool(itemPosX);
break;
case MENU_FUNCTION_PAINT_ALL: