Ken Thomases : winemac: Fix some bytes-vs-WCHARs length computation bugs in the UTF-16 clipboard support .

Alexandre Julliard julliard at winehq.org
Mon Oct 21 14:58:24 CDT 2013


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

Author: Ken Thomases <ken at codeweavers.com>
Date:   Sun Oct 20 23:54:49 2013 -0500

winemac: Fix some bytes-vs-WCHARs length computation bugs in the UTF-16 clipboard support.

---

 dlls/winemac.drv/clipboard.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/dlls/winemac.drv/clipboard.c b/dlls/winemac.drv/clipboard.c
index 80fd689..9cfe283 100644
--- a/dlls/winemac.drv/clipboard.c
+++ b/dlls/winemac.drv/clipboard.c
@@ -1007,7 +1007,7 @@ static HANDLE import_utf16_to_unicodetext(CFDataRef data)
     HANDLE unicode_handle;
 
     src = (const WCHAR *)CFDataGetBytePtr(data);
-    data_len = CFDataGetLength(data);
+    data_len = CFDataGetLength(data) / sizeof(WCHAR);
     for (i = 0; i < data_len; i++)
     {
         if (src[i] == '\n')
@@ -1358,13 +1358,13 @@ static CFDataRef export_unicodetext_to_utf16(HANDLE data)
 
     dst_len = GlobalSize(data) / sizeof(WCHAR);
     if (dst_len) dst_len--; /* Leave off null terminator. */
-    ret = CFDataCreateMutable(NULL, dst_len);
+    ret = CFDataCreateMutable(NULL, dst_len * sizeof(WCHAR));
     if (ret)
     {
         LPWSTR dst;
         int i, j;
 
-        CFDataSetLength(ret, dst_len);
+        CFDataSetLength(ret, dst_len * sizeof(WCHAR));
         dst = (LPWSTR)CFDataGetMutableBytePtr(ret);
 
         /* Remove carriage returns */
@@ -1375,7 +1375,7 @@ static CFDataRef export_unicodetext_to_utf16(HANDLE data)
                 continue;
             dst[j++] = src[i];
         }
-        CFDataSetLength(ret, j);
+        CFDataSetLength(ret, j * sizeof(WCHAR));
     }
     GlobalUnlock(data);
 




More information about the wine-cvs mailing list