Rob Shearman : riched20: The wParam parameter to WM_GETTEXT contains the number of characters, not the number of bytes.

Alexandre Julliard julliard at winehq.org
Mon Jan 21 05:59:02 CST 2008


Module: wine
Branch: master
Commit: 374f6ec616567772d87c13f066cd06f03bf893bb
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=374f6ec616567772d87c13f066cd06f03bf893bb

Author: Rob Shearman <rob at codeweavers.com>
Date:   Fri Jan 18 13:23:37 2008 +0000

riched20: The wParam parameter to WM_GETTEXT contains the number of characters, not the number of bytes.

Fix up some places in the WM_GETTEXT handler where it was assumed that 
it was a byte count.

---

 dlls/riched20/editor.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index 4e7c820..a954500 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -2077,7 +2077,7 @@ static LRESULT RichEditWndProc_common(HWND hWnd, UINT msg, WPARAM wParam,
     else
         bufferA = heap_alloc(wParam + 2);
 
-    ex.cb = wParam + (unicode ? 2*sizeof(WCHAR) : 2);
+    ex.cb = (wParam + 2) * (unicode ? sizeof(WCHAR) : sizeof(CHAR));
     ex.flags = GT_USECRLF;
     ex.codepage = unicode ? 1200 : CP_ACP;
     ex.lpDefaultChar = NULL;
@@ -2086,8 +2086,8 @@ static LRESULT RichEditWndProc_common(HWND hWnd, UINT msg, WPARAM wParam,
 
     if (unicode)
     {
-        memcpy((LPWSTR)lParam, bufferW, wParam);
-        if (lstrlenW(bufferW) >= wParam / sizeof(WCHAR)) rc = 0;
+        memcpy((LPWSTR)lParam, bufferW, wParam * sizeof(WCHAR));
+        if (lstrlenW(bufferW) >= wParam) rc = 0;
     }
     else
     {




More information about the wine-cvs mailing list