summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qfunctions_wince.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@nokia.com>2010-05-05 17:42:54 +0200
committerJoerg Bornemann <joerg.bornemann@nokia.com>2010-05-05 17:42:54 +0200
commit2cc7a785eff228f414faa09ff882c2f0a2092cfd (patch)
tree838f816b717349175be35fda17c698a80402bc0e /src/corelib/kernel/qfunctions_wince.cpp
parent93c2e88ee31b989e44a17da99a9d256a9bf1b28a (diff)
fix qt_wince_bsearch for low nonexistent key values
Task-number: QTBUG-10043 Reviewed-by: thartman
Diffstat (limited to 'src/corelib/kernel/qfunctions_wince.cpp')
-rw-r--r--src/corelib/kernel/qfunctions_wince.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/corelib/kernel/qfunctions_wince.cpp b/src/corelib/kernel/qfunctions_wince.cpp
index 8ad61260e2..e58feb303f 100644
--- a/src/corelib/kernel/qfunctions_wince.cpp
+++ b/src/corelib/kernel/qfunctions_wince.cpp
@@ -352,16 +352,18 @@ void *qt_wince_bsearch(const void *key,
size_t low = 0;
size_t high = num - 1;
while (low <= high) {
- unsigned int mid = ((unsigned) (low + high)) >> 1;
+ size_t mid = (low + high) >> 1;
int c = compare(key, (char*)base + mid * size);
- if (c < 0)
+ if (c < 0) {
+ if (!mid)
+ break;
high = mid - 1;
- else if (c > 0)
+ } else if (c > 0)
low = mid + 1;
else
return (char*) base + mid * size;
}
- return (NULL);
+ return 0;
}
void *lfind(const void* key, const void* base, size_t* elements, size_t size,