From ad07c107f752a1ff71a22660afa2b9f8bcaaec9a Mon Sep 17 00:00:00 2001 From: darylm503 Date: Wed, 18 Jul 2012 18:23:25 +0000 Subject: [PATCH] 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 --- StdLib/LibC/Uefi/Devices/Console/daConsole.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/StdLib/LibC/Uefi/Devices/Console/daConsole.c b/StdLib/LibC/Uefi/Devices/Console/daConsole.c index bfcc4a292c..4897a2e56e 100644 --- a/StdLib/LibC/Uefi/Devices/Console/daConsole.c +++ b/StdLib/LibC/Uefi/Devices/Console/daConsole.c @@ -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'; -- 2.39.2