From: Ken Thomases Subject: [PATCH 1/2] winemac: Fix some bytes-vs-WCHARs length computation bugs in the UTF-16 clipboard support. Message-Id: Date: Sun, 20 Oct 2013 23:54:49 -0500 For . --- 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 2aada4e..8267a86 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);