mirror of https://github.com/acidanthera/audk.git
MdePkg/BaseLib: AsciiStrToUnicodeStr(S) not handle EASCII properly
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=1262 Current implementation of BaseLib APIs: AsciiStrToUnicodeStr() AsciiStrToUnicodeStrS() AsciiStrnToUnicodeStrS() do not handle EASCII properly. More specifically, if the value of ASCII character is larger than 0x7F, then the converted Unicode character will have all '1's in the higher 8 bits. An example: 0xC9 => 0xFFC9 (current implementations) and it should be: 0xC9 => 0x00C9 This commit will address this issue. Cc: Bin.Lain <bin_601@mail2000.com.tw> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
073891a3e7
commit
0dab57708d
|
@ -2932,7 +2932,7 @@ AsciiStrToUnicodeStrS (
|
||||||
// Convert string
|
// Convert string
|
||||||
//
|
//
|
||||||
while (*Source != '\0') {
|
while (*Source != '\0') {
|
||||||
*(Destination++) = (CHAR16)*(Source++);
|
*(Destination++) = (CHAR16)(UINT8)*(Source++);
|
||||||
}
|
}
|
||||||
*Destination = '\0';
|
*Destination = '\0';
|
||||||
|
|
||||||
|
@ -3045,7 +3045,7 @@ AsciiStrnToUnicodeStrS (
|
||||||
// Convert string
|
// Convert string
|
||||||
//
|
//
|
||||||
while ((*Source != 0) && (SourceLen > 0)) {
|
while ((*Source != 0) && (SourceLen > 0)) {
|
||||||
*(Destination++) = (CHAR16)*(Source++);
|
*(Destination++) = (CHAR16)(UINT8)*(Source++);
|
||||||
SourceLen--;
|
SourceLen--;
|
||||||
(*DestinationLength)++;
|
(*DestinationLength)++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1746,7 +1746,7 @@ AsciiStrToUnicodeStr (
|
||||||
|
|
||||||
ReturnValue = Destination;
|
ReturnValue = Destination;
|
||||||
while (*Source != '\0') {
|
while (*Source != '\0') {
|
||||||
*(Destination++) = (CHAR16) *(Source++);
|
*(Destination++) = (CHAR16)(UINT8) *(Source++);
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// End the Destination with a NULL.
|
// End the Destination with a NULL.
|
||||||
|
|
Loading…
Reference in New Issue