Add ASSERT() conditions to UEFI Library Print() and AsciiPrint() functions if gST->ConOut is NULL.

Add ASSERT() conditions to UEFI Library ErrorPrint() and AsciiErrorPrint() functions if gST->StdErr is NULL.
Add ASSERT() conditions to UEFI Library PrintXY() and AsciiPrintXY() gST->ConsoleOutputHandle is NULL.
Update Print(), AsciiPrint(), ErrorPrint(), AsciiErrorPrint() to return 0 if the Simple Text Output Protocol OutputString() call returns an error.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10576 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
mdkinney
2010-06-11 19:11:20 +00:00
parent de243ee444
commit cda8ba5ed7
2 changed files with 32 additions and 8 deletions

View File

@@ -59,12 +59,14 @@ InternalPrint (
IN VA_LIST Marker
)
{
UINTN Return;
CHAR16 *Buffer;
UINTN BufferSize;
EFI_STATUS Status;
UINTN Return;
CHAR16 *Buffer;
UINTN BufferSize;
ASSERT (Format != NULL);
ASSERT (((UINTN) Format & BIT0) == 0);
ASSERT (Console != NULL);
BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
@@ -77,7 +79,10 @@ InternalPrint (
//
// To be extra safe make sure Console has been initialized
//
Console->OutputString (Console, Buffer);
Status = Console->OutputString (Console, Buffer);
if (EFI_ERROR (Status)) {
Return = 0;
}
}
FreePool (Buffer);
@@ -96,6 +101,7 @@ InternalPrint (
PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, then ASSERT().
If gST->ConOut is NULL, then ASSERT().
@param Format Null-terminated Unicode format string.
@param ... Variable argument list whose contents are accessed based
@@ -134,6 +140,7 @@ Print (
PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, then ASSERT().
If gST->StdErr is NULL, then ASSERT().
@param Format Null-terminated Unicode format string.
@param ... Variable argument list whose contents are accessed based
@@ -188,11 +195,13 @@ AsciiInternalPrint (
IN VA_LIST Marker
)
{
UINTN Return;
CHAR16 *Buffer;
UINTN BufferSize;
EFI_STATUS Status;
UINTN Return;
CHAR16 *Buffer;
UINTN BufferSize;
ASSERT (Format != NULL);
ASSERT (Console != NULL);
BufferSize = (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (CHAR16);
@@ -205,7 +214,10 @@ AsciiInternalPrint (
//
// To be extra safe make sure Console has been initialized
//
Console->OutputString (Console, Buffer);
Status = Console->OutputString (Console, Buffer);
if (EFI_ERROR (Status)) {
Return = 0;
}
}
FreePool (Buffer);
@@ -223,6 +235,7 @@ AsciiInternalPrint (
string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
If Format is NULL, then ASSERT().
If gST->ConOut is NULL, then ASSERT().
@param Format Null-terminated ASCII format string.
@param ... Variable argument list whose contents are accessed based
@@ -261,6 +274,7 @@ AsciiPrint (
string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
If Format is NULL, then ASSERT().
If gST->StdErr is NULL, then ASSERT().
@param Format Null-terminated ASCII format string.
@param ... Variable argument list whose contents are accessed based
@@ -357,6 +371,8 @@ InternalPrintGraphic (
RowInfoArray = NULL;
ConsoleHandle = gST->ConsoleOutHandle;
ASSERT( ConsoleHandle != NULL);
Status = gBS->HandleProtocol (
ConsoleHandle,
@@ -558,6 +574,7 @@ Error:
string is printed, and 0 is returned.
If Format is NULL, then ASSERT().
If Format is not aligned on a 16-bit boundary, then ASSERT().
If gST->ConsoleOutputHandle is NULL, then ASSERT().
@param PointX X coordinate to print the string.
@param PointY Y coordinate to print the string.
@@ -634,6 +651,7 @@ PrintXY (
If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no
string is printed, and 0 is returned.
If Format is NULL, then ASSERT().
If gST->ConsoleOutputHandle is NULL, then ASSERT().
@param PointX X coordinate to print the string.
@param PointY Y coordinate to print the string.