gBS->FreePool (Private->LineBuffer);\r
}\r
\r
- Private->LineBuffer = NULL;\r
Private->LineBuffer = AllocatePool (4 * ModeData->HorizontalResolution);\r
if (Private->LineBuffer == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
Status = gBS->AllocatePool (\r
EfiBootServicesData,\r
sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION),\r
(VOID **) &Private->GraphicsOutput.Mode->Info\r
);\r
if (EFI_ERROR (Status)) {\r
- return Status;\r
+ goto FreeMode;\r
}\r
Private->GraphicsOutput.Mode->MaxMode = (UINT32) Private->MaxMode;\r
Private->GraphicsOutput.Mode->Mode = GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER;\r
//\r
// Initialize the hardware\r
//\r
- GraphicsOutput->SetMode (GraphicsOutput, 0);\r
+ Status = GraphicsOutput->SetMode (GraphicsOutput, 0);\r
+ if (EFI_ERROR (Status)) {\r
+ goto FreeInfo;\r
+ }\r
+\r
DrawLogo (\r
Private,\r
Private->ModeData[Private->GraphicsOutput.Mode->Mode].HorizontalResolution,\r
);\r
\r
return EFI_SUCCESS;\r
+\r
+FreeInfo:\r
+ FreePool (Private->GraphicsOutput.Mode->Info);\r
+\r
+FreeMode:\r
+ FreePool (Private->GraphicsOutput.Mode);\r
+ Private->GraphicsOutput.Mode = NULL;\r
+\r
+ return Status;\r
}\r
\r
EFI_STATUS\r
\r
--*/\r
{\r
+ if (Private->LineBuffer != NULL) {\r
+ FreePool (Private->LineBuffer);\r
+ }\r
+\r
if (Private->GraphicsOutput.Mode != NULL) {\r
if (Private->GraphicsOutput.Mode->Info != NULL) {\r
gBS->FreePool (Private->GraphicsOutput.Mode->Info);\r