summaryrefslogtreecommitdiffstats
path: root/src/plugin.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-01-18 17:13:57 +0100
committerDavid Robillard <d@drobilla.net>2020-01-18 17:13:57 +0100
commitbd0d8e69b753903888faaa781661b422793ef4be (patch)
tree14dee47ee29098f8ba4b5dcab33eef26b97e9e8c /src/plugin.c
parentf317e39966f709a68ecdb2355cb39c23abc535c8 (diff)
downloadlilv-bd0d8e69b753903888faaa781661b422793ef4be.tar.gz
lilv-bd0d8e69b753903888faaa781661b422793ef4be.tar.bz2
lilv-bd0d8e69b753903888faaa781661b422793ef4be.zip
Fix cases where incorrect translation is used
Diffstat (limited to 'src/plugin.c')
-rw-r--r--src/plugin.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/plugin.c b/src/plugin.c
index 534bd1e..3f27a6b 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -135,15 +135,22 @@ lilv_plugin_get_one(const LilvPlugin* plugin,
const SordNode* subject,
const SordNode* predicate)
{
- LilvNode* ret = NULL;
- SordIter* stream = lilv_world_query_internal(
- plugin->world, subject, predicate, NULL);
- if (!sord_iter_end(stream)) {
- ret = lilv_node_new_from_node(plugin->world,
- sord_iter_get_node(stream, SORD_OBJECT));
+ /* TODO: This is slower than it could be in some cases, but it's simpler to
+ use the existing i18n code. */
+
+ SordIter* stream =
+ lilv_world_query_internal(plugin->world, subject, predicate, NULL);
+
+ LilvNodes* nodes = lilv_nodes_from_stream_objects(
+ plugin->world, stream, SORD_OBJECT);
+
+ if (nodes) {
+ LilvNode* value = lilv_node_duplicate(lilv_nodes_get_first(nodes));
+ lilv_nodes_free(nodes);
+ return value;
}
- sord_iter_free(stream);
- return ret;
+
+ return NULL;
}
LilvNode*