From 40dfef23e8094c8e83df4efc262392253672046a Mon Sep 17 00:00:00 2001 From: David Robillard Date: Thu, 31 Jan 2008 16:39:31 +0000 Subject: Slightly more gracefully fail on broken rasqal ORDER BY, or plugins with missing ports. git-svn-id: http://svn.drobilla.net/lad/slv2@1120 a436a847-0d15-0410-975c-d299462d15a1 --- src/plugin.c | 20 ++++++++++++++++---- 1 file 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); -- cgit v1.2.1