From 3f5bf264c3841051a914adacc919617dbb651468 Mon Sep 17 00:00:00 2001 From: GZharun Date: Sun, 1 Mar 2015 14:36:06 +0200 Subject: [PATCH] [Summary] Fixed crash on MAC when MIDI device name is 0 ref --- .../portmidi/src/pm_mac/pmmacosxcm.c | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/libs/backends/wavesaudio/portmidi/src/pm_mac/pmmacosxcm.c b/libs/backends/wavesaudio/portmidi/src/pm_mac/pmmacosxcm.c index 78513573d4..b0a6825e67 100644 --- a/libs/backends/wavesaudio/portmidi/src/pm_mac/pmmacosxcm.c +++ b/libs/backends/wavesaudio/portmidi/src/pm_mac/pmmacosxcm.c @@ -866,10 +866,14 @@ char* cm_get_full_endpoint_name(MIDIEndpointRef endpoint) } #endif /* copy the string into our buffer */ - newName = (char *) malloc(CFStringGetLength(fullName) + 1); - CFStringGetCString(fullName, newName, CFStringGetLength(fullName) + 1, - defaultEncoding); - + if (fullName) { + newName = (char *) malloc(CFStringGetLength(fullName) + 1); + CFStringGetCString(fullName, newName, CFStringGetLength(fullName) + 1, + defaultEncoding); + } else { + newName = NULL; + } + /* clean up */ #ifdef OLDCODE if (endpointName) CFRelease(endpointName); @@ -972,8 +976,12 @@ PmError pm_macosxcm_init(void) pm_default_input_device_id = pm_descriptor_index; /* Register this device with PortMidi */ - pm_add_device("CoreMIDI", cm_get_full_endpoint_name(endpoint), - TRUE, (void *) (long) endpoint, &pm_macosx_in_dictionary); + char* full_endpoint_name = cm_get_full_endpoint_name(endpoint); + if (full_endpoint_name != NULL) { + pm_add_device("CoreMIDI", full_endpoint_name, + TRUE, (void *) (long) endpoint, &pm_macosx_in_dictionary); + + } } /* Iterate over the MIDI output devices */ @@ -988,9 +996,12 @@ PmError pm_macosxcm_init(void) pm_default_output_device_id = pm_descriptor_index; /* Register this device with PortMidi */ - pm_add_device("CoreMIDI", cm_get_full_endpoint_name(endpoint), - FALSE, (void *) (long) endpoint, - &pm_macosx_out_dictionary); + char* full_endpoint_name = cm_get_full_endpoint_name(endpoint); + if (full_endpoint_name != NULL) { + pm_add_device("CoreMIDI", full_endpoint_name, + FALSE, (void *) (long) endpoint, + &pm_macosx_out_dictionary); + } } return pmNoError;