oleaut32: VarParseNumFromStr() does not allow leading thousands separators.

Signed-off-by: Francois Gouget <fgouget@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Francois Gouget 2021-07-22 00:03:47 +02:00 committed by Alexandre Julliard
parent c50dff867d
commit de70f7289e
2 changed files with 8 additions and 2 deletions

View File

@ -1606,7 +1606,7 @@ static void test_VarParseNumFromStrEn(void)
/* With flag, but leading thousands separators are not allowed */
CONVERT(",1,000", NUMPRS_THOUSANDS);
todo_wine EXPECTFAIL;
EXPECTFAIL;
/* With flag, thousands separator not needed but still reported */
CONVERT("1,", NUMPRS_THOUSANDS);
@ -1983,7 +1983,7 @@ static void test_VarParseNumFromStrFr(void)
/* With flag, but leading thousands separators are not allowed */
CONVERT(" 1 000", NUMPRS_THOUSANDS);
todo_wine EXPECTFAIL;
EXPECTFAIL;
/* With flag, thousands separator not needed but still reported */
CONVERT("1 ", NUMPRS_THOUSANDS|NUMPRS_USE_ALL);

View File

@ -1652,6 +1652,12 @@ HRESULT WINAPI VarParseNumFromStr(const OLECHAR *lpszStr, LCID lcid, ULONG dwFla
lpszStr++;
} while (iswspace(*lpszStr));
}
else if (pNumprs->dwInFlags & NUMPRS_THOUSANDS &&
((chars.cDigitSeparator && *lpszStr == chars.cDigitSeparator) ||
(cDigitSeparator2 && *lpszStr == cDigitSeparator2)))
{
return DISP_E_TYPEMISMATCH; /* Not allowed before the first digit */
}
else if (pNumprs->dwInFlags & NUMPRS_LEADING_PLUS &&
*lpszStr == chars.cPositiveSymbol &&
!(pNumprs->dwOutFlags & NUMPRS_LEADING_PLUS))