Alex Villacís Lasso : oleaut32: VarBstrFromCy - Remove use of sprintfW by converting a CY
Module: wine Branch: master Commit: 4a4effe3f7124e62f223dd20adfc38246950756d URL: http://source.winehq.org/git/wine.git/?a=commit;h=4a4effe3f7124e62f223dd20ad... Author: Alex Villacís Lasso <a_villacis(a)palosanto.com> Date: Wed Dec 20 13:53:41 2006 -0500 oleaut32: VarBstrFromCy - Remove use of sprintfW by converting a CY into a DECIMAL instead of a double as an intermediate step. --- dlls/oleaut32/vartype.c | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-) diff --git a/dlls/oleaut32/vartype.c b/dlls/oleaut32/vartype.c index 66f863d..2cccbec 100644 --- a/dlls/oleaut32/vartype.c +++ b/dlls/oleaut32/vartype.c @@ -6499,13 +6499,26 @@ HRESULT WINAPI VarBstrFromR8(double dblI HRESULT WINAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut) { WCHAR buff[256]; - double dblVal; + VARIANT_DI decVal; if (!pbstrOut) return E_INVALIDARG; - VarR8FromCy(cyIn, &dblVal); - sprintfW(buff, szDoubleFormatW, dblVal); + decVal.scale = 4; + decVal.sign = 0; + decVal.bitsnum[0] = cyIn.s.Lo; + decVal.bitsnum[1] = cyIn.s.Hi; + if (cyIn.s.Hi & 0x80000000UL) { + DWORD one = 1; + + /* Negative number! */ + decVal.sign = 1; + decVal.bitsnum[0] = ~decVal.bitsnum[0]; + decVal.bitsnum[1] = ~decVal.bitsnum[1]; + VARIANT_int_add(decVal.bitsnum, 3, &one, 1); + } + decVal.bitsnum[2] = 0; + VARIANT_DI_tostringW(&decVal, buff, sizeof(buff)); if (dwFlags & LOCALE_USE_NLS) {
participants (1)
-
Alexandre Julliard