[tracker/binary-log-2: 12/63] Fix CRC value



commit 0490b9ee0f37e4297c6ef83626aaa2868b1d6a16
Author: Philip Van Hoof <philip codeminded be>
Date:   Wed Dec 30 14:36:17 2009 +0100

    Fix CRC value

 src/libtracker-db/tracker-db-journal.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
---
diff --git a/src/libtracker-db/tracker-db-journal.c b/src/libtracker-db/tracker-db-journal.c
index ba03c45..8325854 100644
--- a/src/libtracker-db/tracker-db-journal.c
+++ b/src/libtracker-db/tracker-db-journal.c
@@ -155,6 +155,8 @@ tracker_db_journal_start_transaction (void)
 
 	/* Leave space for size, amount and crc */
 
+	memset (cur_block, 0, size);
+
 	cur_pos = cur_block_len = size;
 	cur_entry_amount = 0;
 }
@@ -290,18 +292,20 @@ tracker_db_journal_commit_transaction (void)
 
 	g_assert (journal);
 
-	crc = tracker_crc32 (cur_block, cur_block_len);
-
 	cur_block_maybe_expand (size);
 
 	cur_setnum (cur_block, &begin_pos, cur_block_len);
 	cur_setnum (cur_block, &begin_pos, cur_entry_amount);
-	cur_setnum (cur_block, &begin_pos, crc);
 
 	cur_setnum (cur_block, &cur_pos, cur_block_len);
 
 	cur_block_len += size;
 
+	/* CRC is calculated with CRC's own bytes set to zeroes */
+
+	crc = tracker_crc32 (cur_block, cur_block_len);
+	cur_setnum (cur_block, &begin_pos, crc);
+
 	write (fileno (journal), cur_block, cur_block_len);
 
 	current_size += cur_block_len;
@@ -337,7 +341,7 @@ tracker_db_journal_close (void)
 int main () {
 	guint i;
 
-	tracker_db_journal_open ();
+	tracker_db_journal_open ("/tmp/test");
 
 	tracker_db_journal_start_transaction ();
 	tracker_db_journal_append_resource (10, "http://resource";);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]