src/corelib/kernel/qfunctions_wince.cpp
changeset 25 e24348a560a6
parent 18 2f34d5167611
equal deleted inserted replaced
23:89e065397ea6 25:e24348a560a6
   350            int (__cdecl *compare)(const void *, const void *))
   350            int (__cdecl *compare)(const void *, const void *))
   351 {
   351 {
   352     size_t low = 0;
   352     size_t low = 0;
   353     size_t high = num - 1;
   353     size_t high = num - 1;
   354     while (low <= high) {
   354     while (low <= high) {
   355         unsigned int mid = ((unsigned) (low + high)) >> 1;
   355         size_t mid = (low + high) >> 1;
   356         int c = compare(key, (char*)base + mid * size);
   356         int c = compare(key, (char*)base + mid * size);
   357         if (c < 0)
   357         if (c < 0) {
       
   358             if (!mid)
       
   359                 break;
   358             high = mid - 1;
   360             high = mid - 1;
   359         else if (c > 0)
   361         } else if (c > 0)
   360             low = mid + 1;
   362             low = mid + 1;
   361         else
   363         else
   362             return (char*) base + mid * size;
   364             return (char*) base + mid * size;
   363     }
   365     }
   364     return (NULL);
   366     return 0;
   365 }
   367 }
   366 
   368 
   367 void *lfind(const void* key, const void* base, size_t* elements, size_t size,
   369 void *lfind(const void* key, const void* base, size_t* elements, size_t size,
   368             int (__cdecl *compare)(const void*, const void*))
   370             int (__cdecl *compare)(const void*, const void*))
   369 {
   371 {