From a2d74e5f0cac7d7e167bd8d302b6b8ffd433228e Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Mon, 25 Feb 2013 11:40:56 +0100 Subject: [PATCH] oleaut32: Fixed VARIANT_FormatDate behavior on dates before year 1600. --- dlls/oleaut32/varformat.c | 2 +- dlls/oleaut32/variant.h | 2 ++ dlls/oleaut32/vartype.c | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dlls/oleaut32/varformat.c b/dlls/oleaut32/varformat.c index 351529c596e..e02ad39b9fc 100644 --- a/dlls/oleaut32/varformat.c +++ b/dlls/oleaut32/varformat.c @@ -1908,7 +1908,7 @@ static HRESULT VARIANT_FormatDate(LPVARIANT pVarIn, LPOLESTR lpszFormat, WCHAR fmt_buff[80]; if (!GetLocaleInfoW(lcid, dwFmt, fmt_buff, sizeof(fmt_buff)/sizeof(WCHAR)) || - !GetDateFormatW(lcid, 0, &udate.st, fmt_buff, pBuff, + !get_date_format(lcid, 0, &udate.st, fmt_buff, pBuff, sizeof(buff)/sizeof(WCHAR)-(pBuff-buff))) { hRes = E_INVALIDARG; diff --git a/dlls/oleaut32/variant.h b/dlls/oleaut32/variant.h index b6af5473ac7..765c0c49a72 100644 --- a/dlls/oleaut32/variant.h +++ b/dlls/oleaut32/variant.h @@ -127,3 +127,5 @@ typedef struct tagVARIANT_NUMBER_CHARS BOOL VARIANT_GetLocalisedText(LANGID, DWORD, WCHAR *) DECLSPEC_HIDDEN; HRESULT VARIANT_ClearInd(VARIANTARG *) DECLSPEC_HIDDEN; +BOOL get_date_format(LCID, DWORD, const SYSTEMTIME *, + const WCHAR *, WCHAR *, int) DECLSPEC_HIDDEN; diff --git a/dlls/oleaut32/vartype.c b/dlls/oleaut32/vartype.c index 28795a7b88b..74f66de472f 100644 --- a/dlls/oleaut32/vartype.c +++ b/dlls/oleaut32/vartype.c @@ -6596,7 +6596,7 @@ static inline int output_int_len(int o, int min_len, WCHAR *date, int date_len) } /* format date string, similar to GetDateFormatW function but works on bigger range of dates */ -static BOOL get_date_format(LCID lcid, DWORD flags, const SYSTEMTIME *st, +BOOL get_date_format(LCID lcid, DWORD flags, const SYSTEMTIME *st, const WCHAR *fmt, WCHAR *date, int date_len) { static const LCTYPE dayname[] = {