diff --git a/lib/platform/CMSWindowsClipboardTextConverter.cpp b/lib/platform/CMSWindowsClipboardTextConverter.cpp index 7b11cdce..a735094a 100644 --- a/lib/platform/CMSWindowsClipboardTextConverter.cpp +++ b/lib/platform/CMSWindowsClipboardTextConverter.cpp @@ -45,10 +45,11 @@ CMSWindowsClipboardTextConverter::doFromIClipboard(const CString& data) const CString CMSWindowsClipboardTextConverter::doToIClipboard(const CString& data) const { - // convert and strip nul terminator - CString dst = CUnicode::textToUTF8(data); - if (dst.size() > 0 && dst[dst.size() - 1] == '\0') { - dst.erase(dst.size() - 1); + // convert and truncate at first nul terminator + CString dst = CUnicode::textToUTF8(data); + CString::size_type n = dst.find('\0'); + if (n != CString::npos) { + dst.erase(n); } return dst; } diff --git a/lib/platform/CMSWindowsClipboardUTF16Converter.cpp b/lib/platform/CMSWindowsClipboardUTF16Converter.cpp index d0ec7ea3..81b85c60 100644 --- a/lib/platform/CMSWindowsClipboardUTF16Converter.cpp +++ b/lib/platform/CMSWindowsClipboardUTF16Converter.cpp @@ -46,9 +46,10 @@ CString CMSWindowsClipboardUTF16Converter::doToIClipboard(const CString& data) const { // convert and strip nul terminator - CString dst = CUnicode::UTF16ToUTF8(data); - if (dst.size() > 0 && dst[dst.size() - 1] == '\0') { - dst.erase(dst.size() - 1); + CString dst = CUnicode::UTF16ToUTF8(data); + CString::size_type n = dst.find('\0'); + if (n != CString::npos) { + dst.erase(n); } return dst; }