CFRelease is not meant to be used with null variables. Check the variables before calling CFRelease.
@@ -62,8 +62,10 @@ static bool coreaudio_enum_device(enum_device_proc_t proc, void *param,
enum_next = proc(param, cf_name, cf_uid, id);
fail:
- CFRelease(cf_name);
- CFRelease(cf_uid);
+ if (cf_name)
+ CFRelease(cf_name);
+ if (cf_uid)
+ CFRelease(cf_uid);
return enum_next;
}
@@ -113,7 +113,9 @@ static bool find_device_id_by_uid(struct coreaudio_data *ca)
success = coreaudio_get_device_id(cf_uid, &ca->device_id);
+
return success;
@@ -502,7 +504,9 @@ static bool coreaudio_get_device_name(struct coreaudio_data *ca)
bfree(ca->device_name);
ca->device_name = bstrdup(name);
return true;