#if wxUSE_UNICODE
#if wxUSE_UNICODE_WCHAR
// native = wchar_t 4 bytes for us
- reset( CFStringCreateWithBytes( kCFAllocatorDefault,
- (const UInt8*)str.wc_str() , str.length()*4, kCFStringEncodingUTF32Native, false /* no BOM */ ) );
+ const wchar_t * const data = str.wc_str();
+ const size_t size = str.length()*sizeof(wchar_t);
+ CFStringBuiltInEncodings cfencoding = kCFStringEncodingUTF32Native;
#elif wxUSE_UNICODE_UTF8
// native = utf8
- reset( CFStringCreateWithBytes( kCFAllocatorDefault,
- (const UInt8*) str.utf8_str() , str.utf8_length() , kCFStringEncodingUTF8, false /* no BOM */ ) );
+ const char * const data = str.utf8_str();
+ const size_t size = str.utf8_length();
+ CFStringBuiltInEncodings cfencoding = kCFStringEncodingUTF8;
#else
- #error "unsupported unicode representation"
+ #error "unsupported Unicode representation"
#endif
+
+ reset( CFStringCreateWithBytes( kCFAllocatorDefault,
+ (const UInt8*)data, size, cfencoding, false /* no BOM */ ) );
#else // not wxUSE_UNICODE
reset( CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
wxMacGetSystemEncFromFontEnc( encoding ) ) );
#error "unsupported unicode representation"
#endif
#else
- wxString result(buf, cStrLen) ;
+ result = wxString(buf, cStrLen) ;
#endif
delete[] buf ;