From: AJFISH Date: Sat, 1 Sep 2007 15:56:49 +0000 (+0000) Subject: Fixed problem with sign extension in print lib. PrintXY could not print out French... X-Git-Tag: edk2-stable201903~22210 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=e7fe49961ab6d2d08e072775eb7c2d3be5d8a5ca Fixed problem with sign extension in print lib. PrintXY could not print out French characters like é. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3761 6f19259b-4bc3-4df7-8a09-765794883524 --- diff --git a/MdePkg/Library/BasePrintLib/PrintLib.c b/MdePkg/Library/BasePrintLib/PrintLib.c index 80408a5ba5..145ca3494a 100644 --- a/MdePkg/Library/BasePrintLib/PrintLib.c +++ b/MdePkg/Library/BasePrintLib/PrintLib.c @@ -154,7 +154,7 @@ BasePrintLibVSPrint ( // // Get the first character from the format string // - FormatCharacter = (*Format | (*(Format + 1) << 8)) & FormatMask; + FormatCharacter = ((*Format & 0xff) | (*(Format + 1) << 8)) & FormatMask; // // Loop until the end of the format string is reached or the output buffer is full @@ -183,7 +183,7 @@ BasePrintLibVSPrint ( // for (Done = FALSE; !Done; ) { Format += BytesPerFormatCharacter; - FormatCharacter = (*Format | (*(Format + 1) << 8)) & FormatMask; + FormatCharacter = ((*Format & 0xff) | (*(Format + 1) << 8)) & FormatMask; switch (FormatCharacter) { case '.': Flags |= PRECISION; @@ -228,7 +228,7 @@ BasePrintLibVSPrint ( for (Count = 0; ((FormatCharacter >= '0') && (FormatCharacter <= '9')); ){ Count = (Count * 10) + FormatCharacter - '0'; Format += BytesPerFormatCharacter; - FormatCharacter = (*Format | (*(Format + 1) << 8)) & FormatMask; + FormatCharacter = ((*Format & 0xff) | (*(Format + 1) << 8)) & FormatMask; } Format -= BytesPerFormatCharacter; if ((Flags & PRECISION) == 0) { @@ -548,7 +548,7 @@ BasePrintLibVSPrint ( // // Get the next character from the format string // - FormatCharacter = (*Format | (*(Format + 1) << 8)) & FormatMask; + FormatCharacter = ((*Format & 0xff) | (*(Format + 1) << 8)) & FormatMask; } //