From 1d9bc02f315cd8a0abbece347ed398677524a258 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 18 Sep 2016 14:03:24 -0400 Subject: Fix erasing default graph iterators --- src/sord.c | 2 +- src/sord_test.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/sord.c b/src/sord.c index 9a0dd58..218234b 100644 --- a/src/sord.c +++ b/src/sord.c @@ -1266,7 +1266,7 @@ sord_erase(SordModel* sord, SordIter* iter) SordNode* quad = NULL; for (unsigned i = 0; i < NUM_ORDERS; ++i) { - if (sord->indices[i]) { + if (sord->indices[i] && (i < GSPO || tup[3])) { if (zix_btree_remove(sord->indices[i], tup, (void**)&quad, i == iter->order ? &iter->cur : NULL)) { return (i == 0) ? SERD_ERR_NOT_FOUND : SERD_ERR_INTERNAL; diff --git a/src/sord_test.c b/src/sord_test.c index 5eeb6d6..6c74017 100644 --- a/src/sord_test.c +++ b/src/sord_test.c @@ -684,9 +684,10 @@ main(int argc, char** argv) } sord_iter_free(iter); + // Erase the first tuple (an element in the default graph) iter = sord_begin(sord); - if (!sord_erase(sord, iter)) { - return test_fail("Succesfully erased iterator on empty model\n"); + if (sord_erase(sord, iter)) { + return test_fail("Failed to erase begin iterator on non-empty model\n"); } // Ensure only the other graph is left -- cgit v1.2.1