From d3768319106a5cf7824579ec3bf9ff1776c09383 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 29 Aug 2015 01:04:18 +0000 Subject: Fix invalid conversion of URIDs to strings. git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5709 a436a847-0d15-0410-975c-d299462d15a1 --- src/client/BlockModel.cpp | 2 +- src/client/ClientStore.cpp | 15 ++++++++------- src/gui/RDFS.cpp | 15 +++++++++++---- 3 files changed, 20 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/client/BlockModel.cpp b/src/client/BlockModel.cpp index 67261dba..e3f7d22f 100644 --- a/src/client/BlockModel.cpp +++ b/src/client/BlockModel.cpp @@ -239,7 +239,7 @@ std::string BlockModel::port_label(SPtr port) const { const Atom& name = port->get_property(Raul::URI(LV2_CORE__name)); - if (name.is_valid()) { + if (name.is_valid() && name.type() == _uris.forge.String) { return name.ptr(); } diff --git a/src/client/ClientStore.cpp b/src/client/ClientStore.cpp index 5adf7f52..b055a88c 100644 --- a/src/client/ClientStore.cpp +++ b/src/client/ClientStore.cpp @@ -307,14 +307,15 @@ ClientStore::put(const Raul::URI& uri, } SPtr plug; - if (p->second.is_valid() && p->second.type() == _uris.forge.URI) { - if (!(plug = _plugin(Raul::URI(p->second.ptr())))) { + if (p->second.is_valid() && (p->second.type() == _uris.forge.URI || + p->second.type() == _uris.forge.URID)) { + const Raul::URI uri(_uris.forge.str(p->second, false)); + if (!(plug = _plugin(uri))) { plug = SPtr( - new PluginModel( - uris(), - Raul::URI(p->second.ptr()), - Atom(), - Resource::Properties())); + new PluginModel(uris(), + uri, + Atom(), + Resource::Properties())); add_plugin(plug); } diff --git a/src/gui/RDFS.cpp b/src/gui/RDFS.cpp index 78893112..baa51943 100644 --- a/src/gui/RDFS.cpp +++ b/src/gui/RDFS.cpp @@ -14,6 +14,7 @@ along with Ingen. If not, see . */ +#include "ingen/Log.hpp" #include "ingen/Resource.hpp" #include "ingen/World.hpp" #include "ingen/client/ObjectModel.hpp" @@ -121,10 +122,16 @@ types(World* world, SPtr model) types.insert(Raul::URI(LILV_NS_RDFS "Resource")); PropRange range = model->properties().equal_range(world->uris().rdf_type); for (PropIter t = range.first; t != range.second; ++t) { - types.insert(Raul::URI(t->second.ptr())); - if (world->uris().ingen_Graph == t->second.ptr()) { - // Add lv2:Plugin as a type for graphs so plugin properties show up - types.insert(world->uris().lv2_Plugin); + if (t->second.type() == world->forge().URI || + t->second.type() == world->forge().URID) { + const Raul::URI type(world->forge().str(t->second, false)); + types.insert(type); + if (world->uris().ingen_Graph == type) { + // Add lv2:Plugin as a type for graphs so plugin properties show up + types.insert(world->uris().lv2_Plugin); + } + } else { + world->log().error(fmt("<%1%> has non-URI type\n") % model->uri()); } } -- cgit v1.2.1