From 95979c0957f0d1e30e691758526f05c33a9d4fd0 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 29 Oct 2015 04:43:41 +0000 Subject: Fix loading dynamic manifest from bundles with spaces git-svn-id: http://svn.drobilla.net/lad/trunk/lilv@5799 a436a847-0d15-0410-975c-d299462d15a1 --- NEWS | 3 ++- src/world.c | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index b781ce8..6ab9133 100644 --- a/NEWS +++ b/NEWS @@ -2,11 +2,12 @@ lilv (0.22.1) unstable; * Unload contained resources when bundle is unloaded * Support re-loading plugins + * Fix loading dyn-manifest from bundles with spaces in their path * Fix Python bindings * Fix documentation installation * Fix outdated comment references to lilv_uri_to_path() - -- David Robillard Thu, 29 Oct 2015 00:23:04 -0400 + -- David Robillard Thu, 29 Oct 2015 00:41:34 -0400 lilv (0.22.0) stable; diff --git a/src/world.c b/src/world.c index 05533db..70a79d6 100644 --- a/src/world.c +++ b/src/world.c @@ -415,7 +415,7 @@ lilv_world_add_plugin(LilvWorld* world, #ifdef LILV_DYN_MANIFEST // Set dynamic manifest library URI, if applicable if (dynmanifest) { - plug->dynmanifest = (LilvDynManifest*)dynmanifest; + plugin->dynmanifest = (LilvDynManifest*)dynmanifest; ++((LilvDynManifest*)dynmanifest)->refs; } #endif @@ -490,7 +490,7 @@ lilv_world_load_dyn_manifest(LilvWorld* world, // Get binary path const SordNode* binary = sord_iter_get_node(binaries, SORD_OBJECT); const uint8_t* lib_uri = sord_node_get_string(binary); - const char* lib_path = lilv_uri_to_path((const char*)lib_uri); + char* lib_path = lilv_file_uri_parse((const char*)lib_uri, 0); if (!lib_path) { LILV_ERROR("No dynamic manifest library path\n"); sord_iter_free(binaries); @@ -504,6 +504,7 @@ lilv_world_load_dyn_manifest(LilvWorld* world, LILV_ERRORF("Failed to open dynmanifest library `%s' (%s)\n", lib_path, dlerror()); sord_iter_free(binaries); + lilv_free(lib_path); continue; } @@ -515,6 +516,7 @@ lilv_world_load_dyn_manifest(LilvWorld* world, LILV_ERRORF("No `lv2_dyn_manifest_open' in `%s'\n", lib_path); sord_iter_free(binaries); dlclose(lib); + lilv_free(lib_path); continue; } @@ -527,6 +529,7 @@ lilv_world_load_dyn_manifest(LilvWorld* world, lib_path); sord_iter_free(binaries); dlclose(lib); + lilv_free(lib_path); continue; } @@ -573,6 +576,7 @@ lilv_world_load_dyn_manifest(LilvWorld* world, } sord_iter_free(p); sord_free(plugins); + lilv_free(lib_path); } sord_iter_free(iter); sord_free(model); -- cgit v1.2.1