Module: wine Branch: master Commit: 3fa4da76ea2b3f2e91a42c0345e5764202a1e992 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3fa4da76ea2b3f2e91a42c0345...
Author: Ken Thomases ken@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; }