StdLib/LibC/Uefi/Devices/Console/daConsole.c: Fix bug where unconvertable wide characters would cause the code to hang or generate an exception.

When the WideTtyCvt() function encountered an unconvertable character, it properly replaced it but did not update the byte count, numB, to 1 and instead left it at -1.

This fix sets numB to 1 when an unconvertable character is replaced.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: tim.lewis@insidesw.com
Reviewed-by: daryl.mcdaniel@intel.com
Reviewed-by: erik.c.bjorge@intel.com


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13540 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
darylm503 2012-07-18 18:23:25 +00:00
parent 532616bbd6
commit ad07c107f7
1 changed files with 2 additions and 1 deletions

View File

@ -77,8 +77,9 @@ WideTtyCvt( CHAR16 *dest, const char *buf, ssize_t n, mbstate_t *Cs)
if( numB == 0) {
break;
};
if(numB < 0) {
if(numB < 0) { // If an unconvertable character, replace it.
wc[0] = BLOCKELEMENT_LIGHT_SHADE;
numB = 1;
}
if(wc[0] == L'\n') {
*dest++ = L'\r';