summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-09-27 19:02:15 +0000
committerDavid Robillard <d@drobilla.net>2011-09-27 19:02:15 +0000
commit2717605d3e163b60158f0d5c785eb48b66e79442 (patch)
tree6a4e3613375b58136b475387b62b05256d006f15 /src
parenta64b14f5af6b925fdb4a1342c47cfe10fde62271 (diff)
downloadlilv-2717605d3e163b60158f0d5c785eb48b66e79442.tar.gz
lilv-2717605d3e163b60158f0d5c785eb48b66e79442.tar.bz2
lilv-2717605d3e163b60158f0d5c785eb48b66e79442.zip
Fix memory leak with dyn-manifest
git-svn-id: http://svn.drobilla.net/lad/trunk/lilv@3495 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/world.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/world.c b/src/world.c
index a7afce5..14f1fe9 100644
--- a/src/world.c
+++ b/src/world.c
@@ -430,6 +430,7 @@ lilv_world_load_dyn_manifest(LilvWorld* world,
const char* lib_path = lilv_uri_to_path((const char*)lib_uri);
if (!lib_path) {
LILV_ERROR("No dynamic manifest library path\n");
+ lilv_match_end(binaries);
continue;
}
@@ -437,6 +438,7 @@ lilv_world_load_dyn_manifest(LilvWorld* world,
void* lib = dlopen(lib_path, RTLD_LAZY);
if (!lib) {
LILV_ERRORF("Failed to open dynamic manifest library `%s'\n", lib_path);
+ lilv_match_end(binaries);
continue;
}
@@ -445,6 +447,7 @@ lilv_world_load_dyn_manifest(LilvWorld* world,
OpenFunc open_func = (OpenFunc)lilv_dlfunc(lib, "lv2_dyn_manifest_open");
if (!open_func || open_func(&handle, &dman_features)) {
LILV_ERRORF("Failed to find `lv2_dyn_manifest_open' in `%s'\n", lib_path);
+ lilv_match_end(binaries);
dlclose(lib);
continue;
}
@@ -456,6 +459,7 @@ lilv_world_load_dyn_manifest(LilvWorld* world,
if (!get_subjects_func) {
LILV_ERRORF("Failed to find `lv2_dyn_manifest_get_subjects' in `%s'\n",
lib_path);
+ lilv_match_end(binaries);
dlclose(lib);
continue;
}
@@ -491,6 +495,7 @@ lilv_world_load_dyn_manifest(LilvWorld* world,
}
lilv_match_end(plug_results);
+ lilv_match_end(binaries);
dlclose(lib);
}
lilv_match_end(dmanifests);