[1/2] oleaut32: Fix lokalized date parsing
André Hentschel
nerv at dawncrow.de
Wed Mar 3 12:57:27 CST 2010
---
dlls/oleaut32/tests/vartype.c | 4 ++--
dlls/oleaut32/vartype.c | 8 ++++++++
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/oleaut32/tests/vartype.c b/dlls/oleaut32/tests/vartype.c
index 0c23a11..6742fce 100644
--- a/dlls/oleaut32/tests/vartype.c
+++ b/dlls/oleaut32/tests/vartype.c
@@ -3435,10 +3435,10 @@ static void test_VarDateFromStr(void)
DFS("1-2-1970"); EXPECT_DBL(25570.0);
/* Native fails "1999 January 3, 9AM". I consider that a bug in native */
- /* test a none english data string */
+ /* test a non-english data string */
DFS("02.01.1970 00:00:00"); EXPECT_MISMATCH;
lcid = MAKELCID(MAKELANGID(LANG_GERMAN,SUBLANG_GERMAN),SORT_DEFAULT);
- DFS("02.01.1970"); todo_wine EXPECT_DBL(25570.0);
+ DFS("02.01.1970"); EXPECT_DBL(25570.0);
DFS("02.01.1970 00:00:00"); todo_wine EXPECT_DBL(25570.0);
}
diff --git a/dlls/oleaut32/vartype.c b/dlls/oleaut32/vartype.c
index 6d604f3..580209b 100644
--- a/dlls/oleaut32/vartype.c
+++ b/dlls/oleaut32/vartype.c
@@ -7607,6 +7607,14 @@ HRESULT WINAPI VarDateFromStr(OLECHAR* strIn, LCID lcid, ULONG dwFlags, DATE* pd
break;
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 &&
((dp.dwFlags[3] & (DP_AM|DP_PM)) || (dp.dwFlags[4] & (DP_AM|DP_PM)) ||
(dp.dwFlags[5] & (DP_AM|DP_PM))))
--
Best Regards, André Hentschel
More information about the wine-patches
mailing list