From a87868c1f5c7e1b8e0c0653a981b6943a5c94074 Mon Sep 17 00:00:00 2001 From: Alejandro Wainzinger <aikawarazuni@gmail.com> Date: Sun, 5 Dec 2010 17:27:27 -0800 Subject: [PATCH] Change device name string handling to use safe conversion to CString (Was causing issues on OSX 10.6.5 Japanese) (cherry picked from commit 17fb7abb8c88bf9ae45bff349d473e9224e8174e) --- rtaudio/RtAudio.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/rtaudio/RtAudio.cpp b/rtaudio/RtAudio.cpp index 69ac86f40..ab158b4af 100644 --- a/rtaudio/RtAudio.cpp +++ b/rtaudio/RtAudio.cpp @@ -558,7 +558,14 @@ RtAudio::DeviceInfo RtApiCore :: getDeviceInfo( unsigned int device ) return info; } - const char *mname = CFStringGetCStringPtr( cfname, CFStringGetSystemEncoding() ); + CFIndex numbytes_cfname = CFStringGetMaximumSizeOfFileSystemRepresentation( cfname ); + if( numbytes_cfname == 0 ) + numbytes_cfname=256; + char mname[numbytes_cfname]; + + if(! CFStringGetCString( cfname, mname,numbytes_cfname,CFStringGetSystemEncoding() ) ) + strcpy(mname,""); + info.name.append( (const char *)mname, strlen(mname) ); info.name.append( ": " ); CFRelease( cfname ); @@ -572,7 +579,13 @@ RtAudio::DeviceInfo RtApiCore :: getDeviceInfo( unsigned int device ) return info; } - const char *name = CFStringGetCStringPtr( cfname, CFStringGetSystemEncoding() ); + numbytes_cfname = CFStringGetMaximumSizeOfFileSystemRepresentation( cfname ); + if( numbytes_cfname == 0 ) + numbytes_cfname=256; + char name[numbytes_cfname]; + if(! CFStringGetCString( cfname, name,numbytes_cfname,CFStringGetSystemEncoding() ) ) + strcpy(mname,""); + info.name.append( (const char *)name, strlen(name) ); CFRelease( cfname );