X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/524c47aa3adf2af11a3069fd5da035a604f08f66..9118a24f5263c271c0b36049ba1a1b82c1763f25:/src/osx/core/strconv_cf.cpp diff --git a/src/osx/core/strconv_cf.cpp b/src/osx/core/strconv_cf.cpp index be04c8a881..aba2402411 100644 --- a/src/osx/core/strconv_cf.cpp +++ b/src/osx/core/strconv_cf.cpp @@ -33,6 +33,7 @@ * assume ABI compatibility even within a given wxWidgets release. */ +#if wxUSE_FONTMAP WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_cf( const char* name) { wxMBConv_cf *result = new wxMBConv_cf(name); @@ -44,6 +45,7 @@ WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_cf( const char* name) else return result; } +#endif // wxUSE_FONTMAP WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_cf(wxFontEncoding encoding) { @@ -85,7 +87,8 @@ WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_cf(wxFontEncoding encoding) false //no BOM/external representation )); - wxCHECK(theString != NULL, wxCONV_FAILED); + if ( theString == NULL ) + return wxCONV_FAILED; /* NOTE: The string content includes the NULL element if the source string did * That means we have to do nothing special because the destination will have @@ -114,8 +117,7 @@ WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_cf(wxFontEncoding encoding) dstSize * sizeof(wchar_t), &usedBufLen); - // charsConverted is > 0 iff conversion succeeded - if(charsConverted <= 0) + if(charsConverted < CFStringGetLength(theString)) return wxCONV_FAILED; /* usedBufLen is the number of bytes written, so we divide by @@ -130,11 +132,11 @@ WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_cf(wxFontEncoding encoding) else { // NOTE: Includes NULL iff source did - /* NOTE: This is an approximation. The eventual UTF-32 will + /* NOTE: This is an approximation. The eventual UTF-32 will * possibly have less elements but certainly not more. */ size_t returnSize = CFStringGetLength(theString); - + if (dstSize == 0 || dst == NULL) { return returnSize; @@ -144,13 +146,13 @@ WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_cf(wxFontEncoding encoding) // for an undersized UTF-32 destination buffer. CFRange fullStringRange = CFRangeMake(0, CFStringGetLength(theString)); UniChar *szUniCharBuffer = new UniChar[fullStringRange.length]; - + CFStringGetCharacters(theString, fullStringRange, szUniCharBuffer); - + wxMBConvUTF16 converter; returnSize = converter.ToWChar( dst, dstSize, (const char*)szUniCharBuffer, fullStringRange.length ); delete [] szUniCharBuffer; - + return returnSize; } // NOTREACHED @@ -205,7 +207,7 @@ WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_cf(wxFontEncoding encoding) CFIndex usedBufLen; CFIndex charsConverted = CFStringGetBytes( - theString, + theString, CFRangeMake(0, CFStringGetLength(theString)), m_encoding, 0, // FAIL on unconvertible characters @@ -216,8 +218,7 @@ WXDLLIMPEXP_BASE wxMBConv* new_wxMBConv_cf(wxFontEncoding encoding) &usedBufLen ); - // charsConverted is > 0 iff conversion succeeded - if(charsConverted <= 0) + if(charsConverted < CFStringGetLength(theString) ) return wxCONV_FAILED; return usedBufLen;