diff options
author | Charlie Brej <cbrej@cs.man.ac.uk> | 2010-08-08 23:11:05 +0100 |
---|---|---|
committer | Charlie Brej <cbrej@cs.man.ac.uk> | 2010-08-08 23:11:05 +0100 |
commit | 24cc214334eade647ffd7f8c55d9f5f708550f2d (patch) | |
tree | f40508d9b935e3fc0690e4f146190b9a738876ad | |
parent | 65e7d666bc6b9b2cf9a6bb61e757cee02474fb66 (diff) |
Remove overwritten records in memory database backend
-rw-r--r-- | src/libtidbit/tidbit-database-mem.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libtidbit/tidbit-database-mem.c b/src/libtidbit/tidbit-database-mem.c index 50600dc..dc6565e 100644 --- a/src/libtidbit/tidbit-database-mem.c +++ b/src/libtidbit/tidbit-database-mem.c @@ -66,6 +66,18 @@ static unsigned int tidbit_database_mem_insert (PtrTidbitDatabase database, PtrT GList* list_element = g_list_find_custom (backend->records, record->guid, tidbit_database_mem_record_has_guid_cmp); if (list_element) return 1; + PtrTidbitQuery query = tidbit_query_record_replaces (record); + GList* records = backend->records; + while (records){ + GList* next_records = g_list_next(records); + PtrTidbitRecord record = records->data; + if (tidbit_query_test_record (query, record)){ + tidbit_record_unref (record); + backend->records = g_list_delete_link (backend->records, records); + } + records = next_records; + } + tidbit_query_unref (query); tidbit_record_ref (record); backend->records = g_list_append(backend->records, record); return 0; //FIXME use propper numbers |