- NewModeBuffer = AllocateZeroPool (sizeof (TERMINAL_CONSOLE_MODE_DATA) * (Count + 2));\r
- ASSERT (NewModeBuffer != NULL);\r
-\r
- //\r
- // Mode 0 and mode 1 is for 80x25, 80x50 according to UEFI spec.\r
- //\r
- ValidCount = 0; \r
-\r
- NewModeBuffer[ValidCount].Columns = 80;\r
- NewModeBuffer[ValidCount].Rows = 25;\r
- ValidCount++;\r
-\r
- NewModeBuffer[ValidCount].Columns = 80;\r
- NewModeBuffer[ValidCount].Rows = 50;\r
- ValidCount++;\r
- \r
- //\r
- // Start from mode 2 to put the valid mode other than 80x25 and 80x50 in the output mode buffer.\r
- //\r
- for (Index = 0; Index < Count; Index++) {\r
- if ((ModeBuffer[Index].Columns == 0) || (ModeBuffer[Index].Rows == 0)) {\r
- //\r
- // Skip the pre-defined mode which is invalid.\r
- //\r
- continue;\r
- }\r
- for (ValidIndex = 0; ValidIndex < ValidCount; ValidIndex++) {\r
- if ((ModeBuffer[Index].Columns == NewModeBuffer[ValidIndex].Columns) &&\r
- (ModeBuffer[Index].Rows == NewModeBuffer[ValidIndex].Rows)) {\r
- //\r
- // Skip the duplicated mode.\r
- //\r
- break;\r
- }\r
- }\r
- if (ValidIndex == ValidCount) {\r
- NewModeBuffer[ValidCount].Columns = ModeBuffer[Index].Columns;\r
- NewModeBuffer[ValidCount].Rows = ModeBuffer[Index].Rows;\r
- ValidCount++;\r
- }\r
+ TextModeData = AllocateCopyPool (sizeof (mTerminalConsoleModeData), mTerminalConsoleModeData);\r
+ if (TextModeData == NULL) {\r
+ return NULL;\r