Changeset 85845 in vbox for trunk/src/VBox/Additions/darwin
- Timestamp:
- Aug 20, 2020 2:28:33 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 140013
- Location:
- trunk/src/VBox/Additions/darwin/VBoxClient
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/darwin/VBoxClient/VBoxClientClipboardGuestToHost.cpp
r85828 r85845 221 221 AssertPtrReturn(pwszData, VERR_INVALID_POINTER); 222 222 223 size_t cwcActual; /* (includes a schwarzenegger character) */ 224 int rc = ShClUtf16LFLenUtf8(pwszData, cbData / sizeof(RTUTF16), &cwcActual); 225 AssertReturn(RT_SUCCESS(rc), rc); 226 227 PRTUTF16 pwszWinTmp = (PRTUTF16)RTMemAlloc(cwcActual * sizeof(RTUTF16)); 228 AssertReturn(pwszWinTmp, VERR_NO_MEMORY); 229 230 rc = ShClConvUtf16LFToCRLF(pwszData, cbData / sizeof(RTUTF16), pwszWinTmp, cwcActual); 223 size_t cwcTmp; /* (includes a schwarzenegger character) */ 224 int rc = ShClUtf16LFLenUtf8(pwszData, cbData / sizeof(RTUTF16), &cwcTmp); 225 AssertRCReturn(rc, rc); 226 227 cwcTmp++; /* Add space for terminator. */ 228 229 PRTUTF16 pwszTmp = (PRTUTF16)RTMemAlloc(cwcTmp * sizeof(RTUTF16)); 230 AssertReturn(pwszTmp, VERR_NO_MEMORY); 231 232 rc = ShClConvUtf16LFToCRLF(pwszData, cbData / sizeof(RTUTF16), pwszTmp, cwcTmp); 231 233 if (RT_SUCCESS(rc)) 232 234 rc = vbclClipboardHostPasteData(u32ClientId, VBOX_SHCL_FMT_UNICODETEXT, 233 pwsz WinTmp, cwcActual* sizeof(RTUTF16));234 235 RTMemFree(pwsz WinTmp);235 pwszTmp, cwcTmp * sizeof(RTUTF16)); 236 237 RTMemFree(pwszTmp); 236 238 237 239 return rc; -
trunk/src/VBox/Additions/darwin/VBoxClient/VBoxClientClipboardHostToGuest.cpp
r85828 r85845 155 155 static int vbclClipboardGuestPasteText(PasteboardRef pPasteboard, void *pData, uint32_t cbDataSize) 156 156 { 157 size_t cbActualLen;158 int rc;159 char *pszUtf8Buf;160 RTUTF16 *pDataInternal;161 162 157 AssertReturn(pData, VERR_INVALID_PARAMETER); 163 158 … … 169 164 170 165 /* Convert END-OF-LINE */ 171 rc = ShClUtf16CRLFLenUtf8((RTUTF16 *)pData, cbDataSize / sizeof(RTUTF16), &cbActualLen); 172 AssertReturn(RT_SUCCESS(rc), rc); 173 pDataInternal = (RTUTF16 *)RTMemAlloc(cbActualLen * sizeof(RTUTF16)); 174 AssertReturn(pDataInternal, VERR_NO_MEMORY); 175 rc = ShClConvUtf16CRLFToLF((RTUTF16 *)pData, cbDataSize / sizeof(RTUTF16), pDataInternal, cbActualLen); 176 177 /* Do actual paste */ 166 size_t cwcDst; 167 int rc = ShClUtf16CRLFLenUtf8((RTUTF16 *)pData, cbDataSize / sizeof(RTUTF16), &cwcDst); 168 AssertRCReturn(rc, rc); 169 170 cwcDst++; /* Add space for terminator. */ 171 172 PRTUTF16 pwszDst = (RTUTF16 *)RTMemAlloc(cwcDst * sizeof(RTUTF16)); 173 AssertPtrReturn(pwszDst, VERR_NO_MEMORY); 174 175 rc = ShClConvUtf16CRLFToLF((RTUTF16 *)pData, cbDataSize / sizeof(RTUTF16), pwszDst, cwcDst); 178 176 if (RT_SUCCESS(rc)) 179 177 { 180 178 /* Paste UTF16 */ 181 rc = vbclClipboardGuestPasteData(pPasteboard, (UInt8 *)p DataInternal, cbActualLen * 2, kUTTypeUTF16PlainText, true);179 rc = vbclClipboardGuestPasteData(pPasteboard, (UInt8 *)pwszDst, cwcDst * sizeof(RTUTF16), kUTTypeUTF16PlainText, true); 182 180 if (RT_SUCCESS(rc)) 183 181 { 184 182 /* Paste UTF8 */ 185 rc = RTUtf16ToUtf8((RTUTF16 *)pDataInternal, &pszUtf8Buf); 183 char *pszDst; 184 rc = RTUtf16ToUtf8((PRTUTF16)pwszDst, &pszDst); 186 185 if (RT_SUCCESS(rc)) 187 186 { 188 rc = vbclClipboardGuestPasteData(pPasteboard, (UInt8 *)psz Utf8Buf, strlen(pszUtf8Buf), kUTTypeUTF8PlainText, false);189 RTStrFree(psz Utf8Buf);187 rc = vbclClipboardGuestPasteData(pPasteboard, (UInt8 *)pszDst, strlen(pszDst), kUTTypeUTF8PlainText, false); 188 RTStrFree(pszDst); 190 189 } 191 190 } … … 193 192 } 194 193 195 RTMemFree(p DataInternal);194 RTMemFree(pwszDst); 196 195 197 196 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.