Ignore:
Timestamp:
Oct 31, 2009, 10:16:06 PM (12 years ago)
Author:
charles
Message:

(trunk libT) #2547: fix tr_lowerBound()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/utils.c

    r9444 r9463  
    11091109    size_t first = 0;
    11101110    const char * cbase = base;
     1111    tr_bool exact = FALSE;
     1112    int c;
    11111113
    11121114    while( nmemb )
     
    11141116        const size_t half = nmemb / 2;
    11151117        const size_t middle = first + half;
    1116         const int c = compar( key, cbase + size*middle );
    1117 
    1118         if( c < 0 )
    1119         {
     1118        c = compar( key, cbase + size*middle );
     1119
     1120        if( c <= 0 ) {
     1121            if( c == 0 )
     1122                exact = TRUE;
     1123            nmemb = half;
     1124        } else {
    11201125            first = middle + 1;
    11211126            nmemb = nmemb - half - 1;
    11221127        }
    1123         else if( !c )
    1124         {
    1125             if( exact_match )
    1126                 *exact_match = TRUE;
    1127             return middle;
    1128         }
    1129         else
    1130         {
    1131             nmemb = half;
    1132         }
    11331128    }
    11341129
    11351130    if( exact_match )
    1136         *exact_match = FALSE;
     1131        *exact_match = exact;
    11371132
    11381133    return first;
Note: See TracChangeset for help on using the changeset viewer.