summaryrefslogtreecommitdiffstats
path: root/src/instance.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/instance.c')
-rw-r--r--src/instance.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/instance.c b/src/instance.c
index 5fa47fa..ea109d5 100644
--- a/src/instance.c
+++ b/src/instance.c
@@ -31,12 +31,6 @@ lilv_plugin_instantiate(const LilvPlugin* plugin,
LilvInstance* result = NULL;
- const LV2_Feature** local_features = NULL;
- if (features == NULL) {
- local_features = (const LV2_Feature**)malloc(sizeof(LV2_Feature));
- local_features[0] = NULL;
- }
-
const LilvNode* const lib_uri = lilv_plugin_get_library_uri(plugin);
const LilvNode* const bundle_uri = lilv_plugin_get_bundle_uri(plugin);
@@ -56,6 +50,12 @@ lilv_plugin_instantiate(const LilvPlugin* plugin,
return NULL;
}
+ const LV2_Feature** local_features = NULL;
+ if (features == NULL) {
+ local_features = (const LV2_Feature**)malloc(sizeof(LV2_Feature));
+ local_features[0] = NULL;
+ }
+
// Search for plugin by URI
for (uint32_t i = 0; true; ++i) {
const LV2_Descriptor* ld = lilv_lib_get_plugin(lib, i);
@@ -93,6 +93,8 @@ lilv_plugin_instantiate(const LilvPlugin* plugin,
}
}
+ free(local_features);
+
if (result) {
// Failed to instantiate
if (result->lv2_handle == NULL) {
@@ -105,8 +107,6 @@ lilv_plugin_instantiate(const LilvPlugin* plugin,
result->lv2_descriptor->connect_port(result->lv2_handle, i, NULL);
}
- free(local_features);
-
return result;
}