summaryrefslogtreecommitdiffstats
path: root/src/lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.c')
-rw-r--r--src/lib.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lib.c b/src/lib.c
index 22c0437..ddf3d8e 100644
--- a/src/lib.c
+++ b/src/lib.c
@@ -33,7 +33,7 @@ lilv_lib_open(LilvWorld* world,
}
const char* const lib_uri = lilv_node_as_uri(uri);
- const char* const lib_path = lilv_uri_to_path(lib_uri);
+ char* const lib_path = lilv_file_uri_parse(lib_uri, NULL);
if (!lib_path) {
return NULL;
}
@@ -42,6 +42,7 @@ lilv_lib_open(LilvWorld* world,
void* lib = dlopen(lib_path, RTLD_NOW);
if (!lib) {
LILV_ERRORF("Failed to open library %s (%s)\n", lib_path, dlerror());
+ free(lib_path);
return NULL;
}
@@ -56,14 +57,17 @@ lilv_lib_open(LilvWorld* world,
desc = ldf(bundle_path, features);
if (!desc) {
LILV_ERRORF("Call to `lv2_lib_descriptor' in %s failed\n", lib_path);
+ free(lib_path);
return NULL;
}
} else if (!df) {
LILV_ERRORF("No `lv2_descriptor' or `lv2_lib_descriptor' in %s\n",
lib_path);
dlclose(lib);
+ free(lib_path);
return NULL;
}
+ free(lib_path);
LilvLib* llib = (LilvLib*)malloc(sizeof(LilvLib));
llib->world = world;