Add comments in DSC files to explain the function and design of components section.
[mirror_edk2.git] / EdkShellPkg / ShellHotFix.patch
index fb05c754d481d5e30e3f9a5932a1a3dc17dc0d1c..46a95d884120d62a16a6ea87a4e2624f8467c6b3 100644 (file)
@@ -163,6 +163,28 @@ Index: drivers/drivers.c
    ShellCloseHandleEnumerator ();
    LibCheckVarFreeVarList (&ChkPck);
    LibUnInitializeStrings ();
+Index: edit/libFileBuffer.c\r
+===================================================================\r
+--- edit/libFileBuffer.c       (revision 30)\r
++++ edit/libFileBuffer.c       (working copy)\r
+@@ -735,7 +735,7 @@\r
+   UINTN                           LineSize;
+   VOID                            *Buffer;
+   CHAR16                          *UnicodeBuffer;
+-  CHAR8                           *AsciiBuffer;
++  UINT8                           *AsciiBuffer;
+   UINTN                           FileSize;
+   EFI_FILE_HANDLE                 Handle;
+   BOOLEAN                         CreateFile;
+@@ -1047,7 +1047,7 @@\r
+       //
+       // Unicode file
+       //
+-      if (AsciiBuffer[0] == 0xff && AsciiBuffer[1] == 0xfe) {
++      if ((FileSize >= 2) && (*((UINT16 *) Buffer) == EFI_UNICODE_BYTE_ORDER_MARK)) {
+         //
+         // Unicode file's size should be even
+         //
 Index: Library/EfiShellLib.h\r
 ===================================================================\r
 --- Library/EfiShellLib.h      (revision 30)\r
@@ -315,6 +337,43 @@ Index: Library/Misc.c
 +
 +
 +
+Index: shellenv/batch.c\r
+===================================================================\r
+--- shellenv/batch.c   (revision 30)\r
++++ shellenv/batch.c   (working copy)\r
+@@ -2074,17 +2074,17 @@\r
+ --*/
+ {
+   //
+-  // UNICODE byte-order-mark is two bytes
++  // UNICODE byte-order-mark is 16 bits
+   //
+-  CHAR8       Buffer8[2];
++  UINT16      Uint16;
+   UINTN       BufSize;
+   EFI_STATUS  Status;
+   //
+   //  Read the first two bytes to check for byte order mark
+   //
+-  BufSize = sizeof (Buffer8);
+-  Status  = File->Read (File, &BufSize, Buffer8);
++  BufSize = sizeof (Uint16);
++  Status  = File->Read (File, &BufSize, &Uint16);
+   if (EFI_ERROR (Status)) {
+     return Status;
+   }
+@@ -2098,9 +2098,8 @@\r
+   //  otherwise assume it is ASCII.  UNICODE byte order mark on
+   //  IA little endian is first byte 0xff and second byte 0xfe
+   //
+-  if ((Buffer8[0] | (Buffer8[1] << 8)) == EFI_UNICODE_BYTE_ORDER_MARK) {
++  if ((BufSize == 2) && (Uint16 == EFI_UNICODE_BYTE_ORDER_MARK)) {
+     *IsAscii = FALSE;
+-
+   } else {
+     *IsAscii = TRUE;
+   }
 Index: SmbiosView/PrintInfo.c\r
 ===================================================================\r
 --- SmbiosView/PrintInfo.c     (revision 30)\r