diff options
author | Robin Gareus <robin@gareus.org> | 2015-03-08 02:51:09 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-03-08 02:51:09 +0100 |
commit | c3430e58843c54646c411650830e29786f99a82b (patch) | |
tree | 228b9ae873ac4e2ef8021786e5505ce197477739 | |
parent | 50041cb4507e03af605286fc878cf92e953a3d86 (diff) |
Cluster Frak String Reference
-rw-r--r-- | libs/backends/coreaudio/coremidi_io.cc | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/libs/backends/coreaudio/coremidi_io.cc b/libs/backends/coreaudio/coremidi_io.cc index fd3b4c1db8..87f88a3a02 100644 --- a/libs/backends/coreaudio/coremidi_io.cc +++ b/libs/backends/coreaudio/coremidi_io.cc @@ -46,16 +46,16 @@ static void midiInputCallback(const MIDIPacketList *list, void *procRef, void *s static std::string getDisplayName(MIDIObjectRef object) { CFStringRef name = nil; - if (noErr != MIDIObjectGetStringProperty(object, kMIDIPropertyDisplayName, &name)) { - return ""; - } - if (!CFStringGetCStringPtr(name, kCFStringEncodingUTF8)) { - if (name) CFRelease(name); - return ""; + std::string rv = ""; + if (noErr == MIDIObjectGetStringProperty(object, kMIDIPropertyDisplayName, &name)) { + const CFIndex size = CFStringGetMaximumSizeForEncoding(CFStringGetLength(name), kCFStringEncodingUTF8); + char *tmp = (char*) malloc(size); + if (CFStringGetCString(name, tmp, size, kCFStringEncodingUTF8)) { + rv = tmp; + } + free(tmp); + CFRelease(name); } - std::string rv (CFStringGetCStringPtr(name, kCFStringEncodingUTF8)); - CFRelease(name); - return rv; } |