Aric Stewart : winex11.drv: Correct sizes in COMPOSITIONSTRING structure when updating fields.

Alexandre Julliard julliard at winehq.org
Fri Jun 3 10:03:44 CDT 2016


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Thu Jun  2 13:29:24 2016 -0500

winex11.drv: Correct sizes in COMPOSITIONSTRING structure when updating fields.

Signed-off-by: Aric Stewart <aric at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winex11.drv/ime.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/dlls/winex11.drv/ime.c b/dlls/winex11.drv/ime.c
index ee622c1..06576dd 100644
--- a/dlls/winex11.drv/ime.c
+++ b/dlls/winex11.drv/ime.c
@@ -217,11 +217,11 @@ static HIMCC updateCompStr(HIMCC old, LPCWSTR compstr, DWORD len)
     {
         needed_size += lpcs->dwCompReadAttrLen;
         needed_size += lpcs->dwCompReadClauseLen;
-        needed_size += lpcs->dwCompReadStrLen * sizeof(DWORD);
+        needed_size += lpcs->dwCompReadStrLen * sizeof(WCHAR);
         needed_size += lpcs->dwResultReadClauseLen;
-        needed_size += lpcs->dwResultReadStrLen * sizeof(DWORD);
+        needed_size += lpcs->dwResultReadStrLen * sizeof(WCHAR);
         needed_size += lpcs->dwResultClauseLen;
-        needed_size += lpcs->dwResultStrLen * sizeof(DWORD);
+        needed_size += lpcs->dwResultStrLen * sizeof(WCHAR);
         needed_size += lpcs->dwPrivateSize;
     }
     rc = ImmCreateIMCC(needed_size);
@@ -304,6 +304,8 @@ static HIMCC updateCompStr(HIMCC old, LPCWSTR compstr, DWORD len)
         *(DWORD*)(&newdata[current_offset]) = len;
         current_offset += sizeof(DWORD);
     }
+    else
+        new_one->dwCompClauseLen = 0;
 
     /* CompStr */
     new_one->dwCompStrLen = len;
@@ -359,12 +361,12 @@ static HIMCC updateResultStr(HIMCC old, LPWSTR resultstr, DWORD len)
     {
         needed_size += lpcs->dwCompReadAttrLen;
         needed_size += lpcs->dwCompReadClauseLen;
-        needed_size += lpcs->dwCompReadStrLen * sizeof(DWORD);
+        needed_size += lpcs->dwCompReadStrLen * sizeof(WCHAR);
         needed_size += lpcs->dwCompAttrLen;
         needed_size += lpcs->dwCompClauseLen;
-        needed_size += lpcs->dwCompStrLen * sizeof(DWORD);
+        needed_size += lpcs->dwCompStrLen * sizeof(WCHAR);
         needed_size += lpcs->dwResultReadClauseLen;
-        needed_size += lpcs->dwResultReadStrLen * sizeof(DWORD);
+        needed_size += lpcs->dwResultReadStrLen * sizeof(WCHAR);
         needed_size += lpcs->dwPrivateSize;
     }
     rc = ImmCreateIMCC(needed_size);
@@ -446,6 +448,8 @@ static HIMCC updateResultStr(HIMCC old, LPWSTR resultstr, DWORD len)
         *(DWORD*)(&newdata[current_offset]) = len;
         current_offset += sizeof(DWORD);
     }
+    else
+        new_one->dwResultClauseLen = 0;
 
     /* ResultStr */
     new_one->dwResultStrLen = len;




More information about the wine-cvs mailing list