summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-03-08 02:51:09 +0100
committerRobin Gareus <robin@gareus.org>2015-03-08 02:51:09 +0100
commitc3430e58843c54646c411650830e29786f99a82b (patch)
tree228b9ae873ac4e2ef8021786e5505ce197477739 /libs
parent50041cb4507e03af605286fc878cf92e953a3d86 (diff)
Cluster Frak String Reference
Diffstat (limited to 'libs')
-rw-r--r--libs/backends/coreaudio/coremidi_io.cc18
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;
}