From 936c70a02f140c3ad9d13f2b222859479e860690 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 24 May 2011 14:12:05 +0000 Subject: Fix removing. git-svn-id: http://svn.drobilla.net/sord/trunk@125 3d64ff67-21c5-427c-a301-fe4f08042e5a --- src/sord.c | 3 ++- src/sord_test.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/sord.c b/src/sord.c index b9eb5e7..fa9c074 100644 --- a/src/sord.c +++ b/src/sord.c @@ -1131,7 +1131,8 @@ sord_remove(SordModel* sord, const SordQuad tup) for (unsigned i = 0; i < NUM_ORDERS; ++i) { if (sord->indices[i]) { const int* const ordering = orderings[i]; - GSequenceIter* const cur = index_search(sord->indices[i], tup, ordering); + GSequenceIter* const cur = index_lower_bound( + sord->indices[i], tup, ordering); if (!g_sequence_iter_is_end(cur)) { if (!quad) { quad = g_sequence_get(cur); diff --git a/src/sord_test.c b/src/sord_test.c index cb36ece..71d5453 100644 --- a/src/sord_test.c +++ b/src/sord_test.c @@ -334,6 +334,26 @@ main(int argc, char** argv) sord_free(sord); } + // Test removing + sord = sord_new(world, SORD_SPO, false); + SordQuad tup = { 0, 0, 0, 0}; + tup[0] = uri(world, 1); + tup[1] = uri(world, 2); + tup[2] = sord_new_literal(world, 0, USTR("hello"), NULL); + tup[3] = 0; + sord_add(sord, tup); + sord_node_free(world, (SordNode*)tup[2]); + tup[2] = sord_new_literal(world, 0, USTR("hi"), NULL); + sord_add(sord, tup); + sord_remove(sord, tup); + if (sord_num_quads(sord) != 1) { + fprintf(stderr, "Removed failed (%zu quads, expected 1)\n", + sord_num_quads(sord)); + goto fail; + } + + sord_free(sord); + sord_world_free(world); return EXIT_SUCCESS; -- cgit v1.2.1