[PATCH 3/4] shlwapi: Return the correct length from GetAcceptLanguagesA
Detlef Riekenberg
wine.dev at web.de
Thu Feb 11 15:57:21 CST 2010
---
dlls/shlwapi/ordinal.c | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c
index 60ce0d1..315208c 100644
--- a/dlls/shlwapi/ordinal.c
+++ b/dlls/shlwapi/ordinal.c
@@ -526,6 +526,8 @@ HRESULT WINAPI GetAcceptLanguagesA( LPSTR langbuf, LPDWORD buflen)
DWORD buflenW, convlen;
HRESULT retval;
+ TRACE("(%p, %p) *%p: %d\n", langbuf, buflen, buflen, buflen ? *buflen : -1);
+
if(!langbuf || !buflen || !*buflen) return E_FAIL;
buflenW = *buflen;
@@ -535,11 +537,20 @@ HRESULT WINAPI GetAcceptLanguagesA( LPSTR langbuf, LPDWORD buflen)
if (retval == S_OK)
{
convlen = WideCharToMultiByte(CP_ACP, 0, langbufW, -1, langbuf, *buflen, NULL, NULL);
+ convlen--; /* do not count the terminating 0 */
}
else /* copy partial string anyway */
{
convlen = WideCharToMultiByte(CP_ACP, 0, langbufW, *buflen, langbuf, *buflen, NULL, NULL);
- if (convlen < *buflen) langbuf[convlen] = 0;
+ if (convlen < *buflen)
+ {
+ langbuf[convlen] = 0;
+ convlen--; /* do not count the terminating 0 */
+ }
+ else
+ {
+ convlen = *buflen;
+ }
}
*buflen = buflenW ? convlen : 0;
--
1.6.6.1
--=-mf+fsdzLnu/wK58k/ejM--
More information about the wine-patches
mailing list