diff options
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | src/world.c | 8 |
2 files changed, 8 insertions, 3 deletions
@@ -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 <d@drobilla.net> Thu, 29 Oct 2015 00:23:04 -0400 + -- David Robillard <d@drobilla.net> 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); |