summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugininstance.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/src/plugininstance.c b/src/plugininstance.c
index 4e405a7..55d1225 100644
--- a/src/plugininstance.c
+++ b/src/plugininstance.c
@@ -31,16 +31,16 @@
SLV2Instance
-slv2_plugin_instantiate(SLV2Plugin plugin,
- double sample_rate,
- const LV2_Feature** features)
+slv2_plugin_instantiate(SLV2Plugin plugin,
+ double sample_rate,
+ const LV2_Feature*const* features)
{
struct _Instance* result = NULL;
- bool local_features = (features == NULL);
- if (local_features) {
- features = malloc(sizeof(LV2_Feature));
- features[0] = NULL;
+ const LV2_Feature** local_features = NULL;
+ if (features == NULL) {
+ local_features = malloc(sizeof(LV2_Feature));
+ local_features[0] = NULL;
}
const char* const lib_uri = slv2_plugin_get_library_uri(plugin);
@@ -91,8 +91,9 @@ slv2_plugin_instantiate(SLV2Plugin plugin,
// Create SLV2Instance to return
result = malloc(sizeof(struct _Instance));
result->lv2_descriptor = ld;
- result->lv2_handle = ld->instantiate(ld, sample_rate, (char*)bundle_path, features);
- struct _InstanceImpl* impl = malloc(sizeof(struct _InstanceImpl));
+ result->lv2_handle = ld->instantiate(ld, sample_rate, (char*)bundle_path,
+ (features) ? features : local_features);
+ struct _InstanceImpl* impl = malloc(sizeof(struct _InstanceImpl));
impl->lib_handle = lib;
result->pimpl = impl;
@@ -116,8 +117,7 @@ slv2_plugin_instantiate(SLV2Plugin plugin,
result->lv2_descriptor->connect_port(result->lv2_handle, i, NULL);
}
- if (local_features)
- free(features);
+ free(local_features);
return result;
}