Commit b4a73f74 authored by Huw Davies's avatar Huw Davies Committed by Alexandre Julliard

oleaut32: Fix VarDateFromStr for the case of a trailing meridiem indicator.

parent 2841a050
......@@ -3528,6 +3528,9 @@ static void test_VarDateFromStr(void)
DFS("1-2-1970"); EXPECT_DBL(25570.0);
DFS("13-1-1970"); EXPECT_DBL(25581.0);
DFS("1970-1-13"); EXPECT_DBL(25581.0);
DFS("6/30/2011 01:20:34"); EXPECT_DBL(40724.05594907407);
DFS("6/30/2011 01:20:34 AM"); EXPECT_DBL(40724.05594907407);
DFS("6/30/2011 01:20:34 PM"); EXPECT_DBL(40724.55594907407);
/* Native fails "1999 January 3, 9AM". I consider that a bug in native */
/* test a non-english data string */
......
......@@ -7668,11 +7668,13 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd
/* Parse the string into our structure */
while (*strIn)
{
if (dp.dwCount >= 6)
break;
if (isdigitW(*strIn))
{
if (dp.dwCount >= 6)
{
hRet = DISP_E_TYPEMISMATCH;
break;
}
dp.dwValues[dp.dwCount] = strtoulW(strIn, &strIn, 10);
dp.dwCount++;
strIn--;
......@@ -7688,10 +7690,15 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd
{
if (i <= 25)
{
if (dp.dwCount >= 6)
hRet = DISP_E_TYPEMISMATCH;
else
{
dp.dwValues[dp.dwCount] = ParseDateMonths[i];
dp.dwFlags[dp.dwCount] |= (DP_MONTH|DP_DATESEP);
dp.dwCount++;
}
}
else if (i > 39 && i < 42)
{
if (!dp.dwCount || dp.dwParseFlags & (DP_AM|DP_PM))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment