Module: wine Branch: stable Commit: 30dbd70dd5cb95021f5de05522ff81a6f52c6e06 URL: http://source.winehq.org/git/wine.git/?a=commit;h=30dbd70dd5cb95021f5de05522...
Author: Ken Thomases ken@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.
(cherry picked from commit c7f8e71ab6e766003faaf0bde9edee64c1f1b3e4)
---
dlls/winemac.drv/clipboard.c | 8 ++++---- 1 file 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);