oleaut32: Fix BSTR to DATE conversion (try 3)
André Hentschel
nerv at dawncrow.de
Tue Mar 9 13:27:45 CST 2010
---
dlls/oleaut32/variant.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/dlls/oleaut32/variant.c b/dlls/oleaut32/variant.c
index 450856f..cf3bd3c 100644
--- a/dlls/oleaut32/variant.c
+++ b/dlls/oleaut32/variant.c
@@ -85,6 +85,7 @@ static inline HRESULT VARIANT_Coerce(VARIANTARG* pd, LCID lcid, USHORT wFlags,
HRESULT res = DISP_E_TYPEMISMATCH;
VARTYPE vtFrom = V_TYPE(ps);
DWORD dwFlags = 0;
+ VARIANTARG vTmp;
TRACE("(%p->(%s%s),0x%08x,0x%04x,%p->(%s%s),%s%s)\n", pd, debugstr_VT(pd),
debugstr_VF(pd), lcid, wFlags, ps, debugstr_VT(ps), debugstr_VF(ps),
@@ -384,7 +385,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(&vTmp))))
+ return VarDateFromR8(V_R8(&vTmp), &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