summaryrefslogtreecommitdiffstats
path: root/src/plugin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugin.c')
-rw-r--r--src/plugin.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/plugin.c b/src/plugin.c
index 3d8b7da..ed90490 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -205,12 +205,24 @@ slv2_plugin_load(SLV2Plugin p)
raptor_sequence_push(p->ports, this_port);
++num_ports;
++last_index;
- } else {
+
+ // More information about a port we already created
+ } else if (this_index < num_ports) {
this_port = slv2_plugin_get_port_by_index(p, this_index);
+
+ // Got a port index out of whack, plugin or rasqal is broken
+ } else {
+ fprintf(stderr, "ERROR: Found port %d immediately after port %d\n",
+ this_index, num_ports-1);
+ fprintf(stderr, "Either the plugin %s or your version of rasqal is broken.\n",
+ slv2_value_as_uri(p->plugin_uri));
+ fprintf(stderr, "Please report (with rasqal version): http://dev.drobilla.net/newticket?component=SLV2\n");
}
- raptor_sequence_push(this_port->classes, slv2_value_new_librdf_uri(p->world,
- librdf_node_get_uri(type_node)));
+ if (this_port) {
+ raptor_sequence_push(this_port->classes,
+ slv2_value_new_librdf_uri(p->world, librdf_node_get_uri(type_node)));
+ }
librdf_free_node(type_node);
librdf_free_node(symbol_node);
@@ -219,7 +231,7 @@ slv2_plugin_load(SLV2Plugin p)
librdf_query_results_next(results);
}
- raptor_sequence_sort(p->ports, slv2_port_compare_by_index);
+ //raptor_sequence_sort(p->ports, slv2_port_compare_by_index);
librdf_free_query_results(results);
librdf_free_query(q);