oleaut32: Fix BSTR to DATE conversion (try 2)
André Hentschel
nerv at dawncrow.de
Thu Mar 4 15:03:45 CST 2010
you were true, didnt expect that way to work but it does, great. thx.
---
dlls/oleaut32/tests/varformat.c | 4 ++--
dlls/oleaut32/variant.c | 6 +++++-
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/oleaut32/tests/varformat.c b/dlls/oleaut32/tests/varformat.c
index fd598cb..87018dc 100644
--- a/dlls/oleaut32/tests/varformat.c
+++ b/dlls/oleaut32/tests/varformat.c
@@ -317,8 +317,8 @@ static void test_VarFormat(void)
VARFMT(VT_BSTR,V_BSTR,bstrin,"<&>&",S_OK,"testing");
SysFreeString(bstrin);
bstrin = SysAllocString(szNum);
- todo_wine VARFMT(VT_BSTR,V_BSTR,bstrin,"hh:mm",S_OK,"02:38");
- todo_wine VARFMT(VT_BSTR,V_BSTR,bstrin,"mm-dd-yy",S_OK,"09-06-08");
+ VARFMT(VT_BSTR,V_BSTR,bstrin,"hh:mm",S_OK,"02:38");
+ VARFMT(VT_BSTR,V_BSTR,bstrin,"mm-dd-yy",S_OK,"09-06-08");
SysFreeString(bstrin);
/* Numeric values are converted to strings then output */
VARFMT(VT_I1,V_I1,1,"<&>&",S_OK,"1");
diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c
index 450856f..f363d24 100644
--- a/dlls/oleaut32/variant.c
+++ b/dlls/oleaut32/variant.c
@@ -384,7 +384,11 @@ static inline HRESULT VARIANT_Coerce(VARIANTARG* pd, LCID lcid, USHORT wFlags,
case VT_CY: return VarDateFromCy(V_CY(ps), &V_DATE(pd));
case VT_DECIMAL: return VarDateFromDec(&V_DECIMAL(ps), &V_DATE(pd));
case VT_DISPATCH: return VarDateFromDisp(V_DISPATCH(ps), lcid, &V_DATE(pd));
- case VT_BSTR: return VarDateFromStr(V_BSTR(ps), lcid, dwFlags, &V_DATE(pd));
+ case VT_BSTR:
+ if(SUCCEEDED(VarR8FromStr(V_BSTR(ps), lcid, dwFlags, &V_R8(pd))))
+ return VarDateFromR8(V_R8(pd), &V_DATE(pd));
+ else
+ return VarDateFromStr(V_BSTR(ps), lcid, dwFlags, &V_DATE(pd));
}
break;
--
Best Regards, André Hentschel
More information about the wine-patches
mailing list