oleaut32: Check if the delimiter is a date delimiter.
This commit is contained in:
parent
1ee497ae25
commit
7b66e1aeeb
|
@ -3436,10 +3436,14 @@ static void test_VarDateFromStr(void)
|
||||||
/* Native fails "1999 January 3, 9AM". I consider that a bug in native */
|
/* Native fails "1999 January 3, 9AM". I consider that a bug in native */
|
||||||
|
|
||||||
/* test a non-english data string */
|
/* test a non-english data string */
|
||||||
|
DFS("02.01.1970"); EXPECT_MISMATCH;
|
||||||
DFS("02.01.1970 00:00:00"); EXPECT_MISMATCH;
|
DFS("02.01.1970 00:00:00"); EXPECT_MISMATCH;
|
||||||
lcid = MAKELCID(MAKELANGID(LANG_GERMAN,SUBLANG_GERMAN),SORT_DEFAULT);
|
lcid = MAKELCID(MAKELANGID(LANG_GERMAN,SUBLANG_GERMAN),SORT_DEFAULT);
|
||||||
DFS("02.01.1970"); EXPECT_DBL(25570.0);
|
DFS("02.01.1970"); EXPECT_DBL(25570.0);
|
||||||
DFS("02.01.1970 00:00:00"); EXPECT_DBL(25570.0);
|
DFS("02.01.1970 00:00:00"); EXPECT_DBL(25570.0);
|
||||||
|
lcid = MAKELCID(MAKELANGID(LANG_SPANISH,SUBLANG_SPANISH),SORT_DEFAULT);
|
||||||
|
DFS("02.01.1970"); EXPECT_MISMATCH;
|
||||||
|
DFS("02.01.1970 00:00:00"); EXPECT_MISMATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_VarDateCopy(void)
|
static void test_VarDateCopy(void)
|
||||||
|
|
|
@ -7426,7 +7426,8 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd
|
||||||
LOCALE_SABBREVDAYNAME1, LOCALE_SABBREVDAYNAME2, LOCALE_SABBREVDAYNAME3,
|
LOCALE_SABBREVDAYNAME1, LOCALE_SABBREVDAYNAME2, LOCALE_SABBREVDAYNAME3,
|
||||||
LOCALE_SABBREVDAYNAME4, LOCALE_SABBREVDAYNAME5, LOCALE_SABBREVDAYNAME6,
|
LOCALE_SABBREVDAYNAME4, LOCALE_SABBREVDAYNAME5, LOCALE_SABBREVDAYNAME6,
|
||||||
LOCALE_SABBREVDAYNAME7,
|
LOCALE_SABBREVDAYNAME7,
|
||||||
LOCALE_S1159, LOCALE_S2359
|
LOCALE_S1159, LOCALE_S2359,
|
||||||
|
LOCALE_SDATE
|
||||||
};
|
};
|
||||||
static const BYTE ParseDateMonths[] =
|
static const BYTE ParseDateMonths[] =
|
||||||
{
|
{
|
||||||
|
@ -7498,7 +7499,7 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd
|
||||||
dp.dwFlags[dp.dwCount] |= (DP_MONTH|DP_DATESEP);
|
dp.dwFlags[dp.dwCount] |= (DP_MONTH|DP_DATESEP);
|
||||||
dp.dwCount++;
|
dp.dwCount++;
|
||||||
}
|
}
|
||||||
else if (i > 39)
|
else if (i > 39 && i < 42)
|
||||||
{
|
{
|
||||||
if (!dp.dwCount || dp.dwParseFlags & (DP_AM|DP_PM))
|
if (!dp.dwCount || dp.dwParseFlags & (DP_AM|DP_PM))
|
||||||
hRet = DISP_E_TYPEMISMATCH;
|
hRet = DISP_E_TYPEMISMATCH;
|
||||||
|
@ -7544,6 +7545,15 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd
|
||||||
{
|
{
|
||||||
if (!dp.dwCount || !strIn[1])
|
if (!dp.dwCount || !strIn[1])
|
||||||
hRet = DISP_E_TYPEMISMATCH;
|
hRet = DISP_E_TYPEMISMATCH;
|
||||||
|
else
|
||||||
|
if (tokens[42][0] == *strIn)
|
||||||
|
{
|
||||||
|
dwDateSeps++;
|
||||||
|
if (dwDateSeps > 2)
|
||||||
|
hRet = DISP_E_TYPEMISMATCH;
|
||||||
|
else
|
||||||
|
dp.dwFlags[dp.dwCount - 1] |= DP_DATESEP;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
dp.dwFlags[dp.dwCount - 1] |= DP_TIMESEP;
|
dp.dwFlags[dp.dwCount - 1] |= DP_TIMESEP;
|
||||||
}
|
}
|
||||||
|
@ -7607,14 +7617,6 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x3: /* TTT TTTDD TTTDDD */
|
case 0x3: /* TTT TTTDD TTTDDD */
|
||||||
if (iDate && dp.dwCount == 3)
|
|
||||||
{
|
|
||||||
/* DDD */
|
|
||||||
if ((dp.dwFlags[0] & (DP_AM|DP_PM)) || (dp.dwFlags[1] & (DP_AM|DP_PM)) ||
|
|
||||||
(dp.dwFlags[2] & (DP_AM|DP_PM)))
|
|
||||||
hRet = DISP_E_TYPEMISMATCH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (dp.dwCount > 4 &&
|
if (dp.dwCount > 4 &&
|
||||||
((dp.dwFlags[3] & (DP_AM|DP_PM)) || (dp.dwFlags[4] & (DP_AM|DP_PM)) ||
|
((dp.dwFlags[3] & (DP_AM|DP_PM)) || (dp.dwFlags[4] & (DP_AM|DP_PM)) ||
|
||||||
(dp.dwFlags[5] & (DP_AM|DP_PM))))
|
(dp.dwFlags[5] & (DP_AM|DP_PM))))
|
||||||
|
@ -7707,13 +7709,6 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd
|
||||||
dp.dwCount -= 3;
|
dp.dwCount -= 3;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1B: /* localized DDDTTT */
|
|
||||||
if (!iDate)
|
|
||||||
{
|
|
||||||
hRet = DISP_E_TYPEMISMATCH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* .. fall through .. */
|
|
||||||
case 0x18: /* DDDTTT */
|
case 0x18: /* DDDTTT */
|
||||||
if ((dp.dwFlags[0] & (DP_AM|DP_PM)) || (dp.dwFlags[1] & (DP_AM|DP_PM)) ||
|
if ((dp.dwFlags[0] & (DP_AM|DP_PM)) || (dp.dwFlags[1] & (DP_AM|DP_PM)) ||
|
||||||
(dp.dwFlags[2] & (DP_AM|DP_PM)))
|
(dp.dwFlags[2] & (DP_AM|DP_PM)))
|
||||||
|
|
Loading…
Reference in New Issue