- Avoid use of swprintf, which is blatantly incompatible with -fshort-wchar
CORE-6918 #resolve

svn path=/trunk/; revision=59504
This commit is contained in:
Thomas Faber 2013-07-18 20:29:18 +00:00
parent a937917f7f
commit cc5e6fe6a6
2 changed files with 17 additions and 10 deletions

View file

@ -21,9 +21,6 @@ else()
infhostrtl.c)
add_definitions(-D__NO_CTYPE_INLINES -DINFLIB_HOST)
if(MSVC)
add_definitions(-D_CRT_NON_CONFORMING_SWPRINTFS)
endif()
add_library(inflibhost ${GLOBAL_FILES} ${SOURCE})
if(NOT MSVC)
add_target_compile_flags(inflibhost "-Wpointer-arith -Wwrite-strings")

View file

@ -19,6 +19,18 @@ InfpSubstituteString(PINFCACHE Inf,
WCHAR *buffer,
unsigned int size);
static void
ShortToHex(PWCHAR Buffer,
USHORT Value)
{
WCHAR HexDigits[] = L"0123456789abcdef";
Buffer[0] = HexDigits[Value >> 12 & 0xf];
Buffer[1] = HexDigits[Value >> 8 & 0xf];
Buffer[2] = HexDigits[Value >> 4 & 0xf];
Buffer[3] = HexDigits[Value >> 0 & 0xf];
}
/* retrieve the string substitution for a given string, or NULL if not found */
/* if found, len is set to the substitution length */
static PCWSTR
@ -33,7 +45,7 @@ InfpGetSubstitutionString(PINFCACHE Inf,
PINFCONTEXT Context = NULL;
PWCHAR Data = NULL;
WCHAR ValueName[MAX_INF_STRING_LENGTH +1];
WCHAR StringLangId[13];
WCHAR StringLangId[] = L"Strings.XXXX";
if (!*len) /* empty string (%%) is replaced by single percent */
{
@ -48,9 +60,8 @@ InfpGetSubstitutionString(PINFCACHE Inf,
if (Inf->LanguageId != 0)
{
swprintf(StringLangId,
L"Strings.%04hx",
Inf->LanguageId);
ShortToHex(&StringLangId[sizeof("Strings.") - 1],
Inf->LanguageId);
Status = InfpFindFirstLine(Inf,
StringLangId,
@ -58,9 +69,8 @@ InfpGetSubstitutionString(PINFCACHE Inf,
&Context);
if (Status != INF_STATUS_SUCCESS)
{
swprintf(StringLangId,
L"Strings.%04hx",
MAKELANGID(PRIMARYLANGID(Inf->LanguageId), SUBLANG_NEUTRAL));
ShortToHex(&StringLangId[sizeof("Strings.") - 1],
MAKELANGID(PRIMARYLANGID(Inf->LanguageId), SUBLANG_NEUTRAL));
Status = InfpFindFirstLine(Inf,
StringLangId,