Aric Stewart : winemac.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: 73bb165ba5b7611689034b968405d92fae65a1fd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=73bb165ba5b7611689034b968405d92fae65a1fd

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

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

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

---

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

diff --git a/dlls/winemac.drv/ime.c b/dlls/winemac.drv/ime.c
index 295c6cc..7681e8e 100644
--- a/dlls/winemac.drv/ime.c
+++ b/dlls/winemac.drv/ime.c
@@ -178,11 +178,11 @@ static HIMCC updateCompStr(HIMCC old, LPCWSTR compstr, DWORD len, DWORD *flags)
     {
         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);
@@ -271,6 +271,8 @@ static HIMCC updateCompStr(HIMCC old, LPCWSTR compstr, DWORD len, DWORD *flags)
         *(DWORD*)&newdata[current_offset] = len;
         current_offset += sizeof(DWORD);
     }
+    else
+        new_one->dwCompClauseLen = 0;
 
     /* CompStr */
     new_one->dwCompStrLen = len;
@@ -324,12 +326,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);
@@ -411,6 +413,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