diff options
-rw-r--r-- | ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.c index 8e2141bf43..d26d08f95c 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1CommandsLib.c @@ -185,6 +185,7 @@ EditorClearLine ( IN UINTN LastRow
)
{
+ UINTN Col;
CHAR16 Line[200];
if (Row == 0) {
@@ -193,22 +194,28 @@ EditorClearLine ( //
// prepare a blank line
+ // If max column is larger, split to multiple prints.
//
- SetMem16(Line, LastCol*sizeof(CHAR16), L' ');
-
- if (Row == LastRow) {
+ SetMem16 (Line, sizeof (Line), L' ');
+ Line[ARRAY_SIZE (Line) - 1] = CHAR_NULL;
+
+ for (Col = 1; Col <= LastCol; Col += ARRAY_SIZE (Line) - 1) {
+ if (Col + ARRAY_SIZE (Line) - 1 > LastCol) {
+ if (Row == LastRow) {
+ //
+ // if CHAR_NULL is still at position LastCol, it will cause first line error
+ //
+ Line[(LastCol % (ARRAY_SIZE (Line) - 1)) - 1] = CHAR_NULL;
+ } else {
+ Line[LastCol % (ARRAY_SIZE (Line) - 1)] = CHAR_NULL;
+ }
+ }
+
//
- // if CHAR_NULL is still at position 80, it will cause first line error
+ // print out the blank line
//
- Line[LastCol - 1] = CHAR_NULL;
- } else {
- Line[LastCol] = CHAR_NULL;
+ ShellPrintEx ((INT32) Col - 1, (INT32) Row - 1, Line);
}
-
- //
- // print out the blank line
- //
- ShellPrintEx (0, ((INT32)Row) - 1, Line);
}
/**
|