[tracker/tracker-0.6] Use gint64 not guint for binary search, array index was sometimes < 0
- From: Martyn James Russell <mr src gnome org>
- To: svn-commits-list gnome org
- Subject: [tracker/tracker-0.6] Use gint64 not guint for binary search, array index was sometimes < 0
- Date: Wed, 6 May 2009 10:03:42 -0400 (EDT)
commit 7fad05c73c0059c09a8c9e3e2a4ba66a175b433b
Author: Martyn Russell <martyn imendio com>
Date: Wed May 6 15:00:28 2009 +0100
Use gint64 not guint for binary search, array index was sometimes < 0
The left/right/center variables used in the binary search were defined
as guint and center which is used for the index in the array had
rolled over to max guint after being set to a value < 0.
---
src/libtracker-db/tracker-db-index.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/libtracker-db/tracker-db-index.c b/src/libtracker-db/tracker-db-index.c
index 06051b7..e2a17f7 100644
--- a/src/libtracker-db/tracker-db-index.c
+++ b/src/libtracker-db/tracker-db-index.c
@@ -1238,8 +1238,8 @@ tracker_db_index_add_word (TrackerDBIndex *indez,
TrackerDBIndexItem elem;
TrackerDBIndexItem *current;
GArray *array;
- guint left, right, center;
- guint new_score;
+ gint64 left, right, center;
+ gint64 new_score;
g_return_if_fail (TRACKER_IS_DB_INDEX (indez));
g_return_if_fail (word != NULL);
@@ -1275,6 +1275,10 @@ tracker_db_index_add_word (TrackerDBIndex *indez,
do {
center += left;
+
+ /* For testing */
+ /* g_return_if_fail (center < array->len); */
+
current = &g_array_index (array, TrackerDBIndexItem, center);
if (service_id > current->id) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]