Ken Thomases : winex11: Have ToUnicodeEx null-terminate the output buffer, if there's room.
Module: wine Branch: master Commit: 3fa4da76ea2b3f2e91a42c0345e5764202a1e992 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3fa4da76ea2b3f2e91a42c0345... Author: Ken Thomases <ken(a)codeweavers.com> Date: Mon Dec 19 21:59:56 2011 -0600 winex11: Have ToUnicodeEx null-terminate the output buffer, if there's room. --- dlls/winex11.drv/keyboard.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c index e985694..c561102 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c @@ -2680,6 +2680,12 @@ INT CDECL X11DRV_ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState found: if (buf != lpChar) HeapFree(GetProcessHeap(), 0, lpChar); + + /* Null-terminate the buffer, if there's room. MSDN clearly states that the + caller must not assume this is done, but some programs (e.g. Audiosurf) do. */ + if (1 <= ret && ret < bufW_size) + bufW[ret] = 0; + TRACE_(key)("returning %d with %s\n", ret, debugstr_wn(bufW, ret)); return ret; }
participants (1)
-
Alexandre Julliard