File tree Expand file tree Collapse file tree 1 file changed +15
-17
lines changed
Expand file tree Collapse file tree 1 file changed +15
-17
lines changed Original file line number Diff line number Diff line change @@ -2225,27 +2225,25 @@ impl Inner {
22252225 if size == 0 || self . index_key ( 0 ) . unwrap_slice ( ) > key {
22262226 return Err ( 0 ) ;
22272227 }
2228- let mut base = 0_usize ;
2229- while size > 1 {
2230- let half = size / 2 ;
2231- let mid = base + half;
2232- // mid is always in [0, size), that means mid is >= 0 and < size.
2233- // mid >= 0: by definition
2234- // mid < size: mid = size / 2 + size / 4 + size / 8 ...
2228+ let mut left = 0 ;
2229+ let mut right = size;
2230+ while left < right {
2231+ let mid = left + size / 2 ;
2232+
22352233 let l = self . index_key ( mid) ;
22362234 let cmp = crate :: fastcmp ( l. unwrap_slice ( ) , key) ;
2237- base = if cmp == Greater { base } else { mid } ;
2238- size -= half;
2239- }
2240- // base is always in [0, size) because base <= mid.
2241- let l = self . index_key ( base) ;
2242- let cmp = crate :: fastcmp ( l. unwrap_slice ( ) , key) ;
22432235
2244- if cmp == Equal {
2245- Ok ( base)
2246- } else {
2247- Err ( base + ( cmp == Less ) as usize )
2236+ if cmp == Less {
2237+ left = mid + 1 ;
2238+ } else if cmp == Greater {
2239+ right = mid;
2240+ } else {
2241+ return Ok ( mid) ;
2242+ }
2243+
2244+ size = right - left;
22482245 }
2246+ Err ( left)
22492247 }
22502248
22512249 pub ( crate ) fn can_merge_child ( & self , pid : u64 ) -> bool {
You can’t perform that action at this time.
0 commit comments