]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/corefoundation/cfstring.cpp
Fix for unexplained change in socket behavior where failed connections throw a CONNEC...
[wxWidgets.git] / src / mac / corefoundation / cfstring.cpp
index 0bb09db851e843df88bf8dc2a8389d62ba52b75c..ace47930f9556462770038d9fb6b7fefbc4d818b 100644 (file)
@@ -107,6 +107,10 @@ wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding)
         encoding = wxLocale::GetSystemEncoding() ;
 #endif
     }
+    if ( encoding == wxFONTENCODING_SYSTEM )
+    {
+        enc = CFStringGetSystemEncoding();
+    }
 
     switch( encoding)
     {
@@ -629,27 +633,34 @@ wxFontEncoding wxMacGetFontEncFromSystemEnc(wxUint32 encoding)
 // converts this string into a carbon foundation string with optional pc 2 mac encoding
 void wxMacCFStringHolder::Assign( const wxString &st , wxFontEncoding encoding )
 {
-    Release() ;
-
-    wxString str = st ;
-    wxMacConvertNewlines13To10( &str ) ;
+    Release() ; 
+    if (st.IsEmpty())
+    {
+        m_cfs = CFSTR("") ;
+        CFRetain( m_cfs ) ;
+    }
+    else
+    {
+        wxString str = st ;
+        wxMacConvertNewlines13To10( &str ) ;
 #if wxUSE_UNICODE
 #if SIZEOF_WCHAR_T == 2
-    m_cfs = CFStringCreateWithCharacters( kCFAllocatorDefault,
-        (UniChar*)str.wc_str() , str.Len() );
+        m_cfs = CFStringCreateWithCharacters( kCFAllocatorDefault,
+            (UniChar*)str.wc_str() , str.Len() );
 #else
-    wxMBConvUTF16BE converter ;
-    size_t unicharlen = converter.WC2MB( NULL , str.wc_str() , 0 ) ;
-    UniChar *unibuf = new UniChar[ unicharlen / sizeof(UniChar) + 1 ] ;
-    converter.WC2MB( (char*)unibuf , str.wc_str() , unicharlen ) ;
-    m_cfs = CFStringCreateWithCharacters( kCFAllocatorDefault ,
-        unibuf , unicharlen / sizeof(UniChar) ) ;
-    delete[] unibuf ;
+        wxMBConvUTF16BE converter ;
+        size_t unicharlen = converter.WC2MB( NULL , str.wc_str() , 0 ) ;
+        UniChar *unibuf = new UniChar[ unicharlen / sizeof(UniChar) + 1 ] ;
+        converter.WC2MB( (char*)unibuf , str.wc_str() , unicharlen ) ;
+        m_cfs = CFStringCreateWithCharacters( kCFAllocatorDefault ,
+            unibuf , unicharlen / sizeof(UniChar) ) ;
+        delete[] unibuf ;
 #endif
 #else // not wxUSE_UNICODE
-    m_cfs = CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
-        wxMacGetSystemEncFromFontEnc( encoding ) ) ;
+        m_cfs = CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
+            wxMacGetSystemEncFromFontEnc( encoding ) ) ;
 #endif
+    }
     m_release = true ;
 }